Machine Learning in der Praxis

Konzepte und Architekturen

Oliver Zeigermann / Stefan Toth - embarc Software Consulting GmbH

embarc Architektur-Punsch, Dezember 2020

Folien: https://bit.ly/ml-punsch

Trainierte Neuronale Netzwerke lokal nutzen


from tensorflow.keras.applications.mobilenet_v2 import MobileNetV2
model = MobileNetV2(weights='imagenet', input_shape=(224, 224, 3))

prediction = model.predict(img)
> ('n02124075', 'Egyptian_cat', 0.43944412)

Beispiel: MobileNet auf Imagenet-Daten mit Keras

Traditionelles Machine Learning

Training


from sklearn.tree import DecisionTreeClassifier
clf = DecisionTreeClassifier()
clf.fit(X, y)
        

Prediction


y_pred = clf.predict(input)
    

Beispiel: Decision Tree mit Sklearn

Struktur Neuronaler Netzwerke lokal nutzen

Training


from tensorflow.keras.applications.mobilenet_v2 import MobileNetV2
model = MobileNetV2(classes=num_classes, weights=None, 
                    input_shape=(1920, 1080, 3))

model.compile(loss='sparse_categorical_crossentropy',
             optimizer='adam')
model.fit(X, y)                            
    

Prediction


prediction = model.predict(img)
> ('n02124075', 'Egyptian_cat', 0.43944412)
        

Beispiel: untrainiertes MobileNet mit Keras, geht auch mir vortrainiertem Netz, Beispiel-Code allerdings komplex

Neuronale Netzwerke selbst aufbauen


model = tf.keras.Sequential()

model.add(Conv2D(filters=32, activation='relu') 
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=2))
model.add(Dropout(dropout))

model.add(Conv2D(filters=64, activation='relu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=2))
model.add(Dropout(dropout))

model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(dropout))
model.add(Dense(num_classes, activation='softmax'))
  

Beispiel: VGG in TensorFlow

Es geht noch tiefer: Operationen auf Matrix-Ebene


init W, U, V
for i in range(0, len(X)):
    x = X[i]

    h = torch.zeros(nhidden, 1)
    for t in range(len(x)):
        h = W@h + U@onehot(x[t])
        h = torch.relu(h)
    o = V@h
    o = softmax(o)

    loss = cross_entropy(o, y[i])
    update W,U,V towards lower loss
    

Beispiel: BOW in Pytorch
https://explained.ai/rnn/implementation.html#sec:1.5

Vielen Dank

Machine Learning in der Praxis - Konzepte und Architekturen

Bleibt gern in Kontakt

Oliver Zeigermann / @DJCordhose / https://www.linkedin.com/in/oliver-zeigermann-34989773

Stefan Toth / @st_toth / https://www.linkedin.com/in/sto-embarc/

embarc Software Consulting GmbH

Diese Folien: https://bit.ly/ml-punsch