[PYTHON] Versuchen Sie die Feinabstimmung (Transferlernen), die bei Bildern mit Keras der Mainstream ist, mit Datenlernen

Wenn ich das erstellte Modell in einem Onlinedienst verwende, möchte ich das vorhandene Modell jeden Tag mit den neu gesammelten Daten aktualisieren, aber es kostet Zeit und Geld, alle Daten in einem Stapel jeden Tag zu drehen. Beim Bildtraining ist es üblich, dass ein trainiertes Modell wie VGG16 das Bild, das Sie unterscheiden möchten, liest und eine Feinabstimmung durchführt. Dieses Mal habe ich ein Modell gespeichert, das mit normalen Daten erstellt wurde, und versucht, das Modell zu optimieren.

Hier werden nur die Punkte vorgestellt. Lesen Sie daher den folgenden Beispielcode, der tatsächlich funktioniert. https://github.com/tizuo/keras/blob/master/%E8%BB%A2%E7%A7%BB%E5%AD%A6%E7%BF%92%E3%83%86%E3%82%B9%E3%83%88.ipynb

Erstellen Sie ein Basismodell

Dieses Mal werden wir die Irisdaten entsprechend aufteilen und in zwei Teile trainieren. Definieren Sie zunächst das Basismodell. Der einzige Punkt ist, den Parameter name in die Ebene zu setzen, die Sie erben möchten.

python


model_b = Sequential()
model_b.add(Dense(4, input_shape=(4, ), name='l1'))
model_b.add(Activation('relu'))
model_b.add(Dense(4, input_shape=(4, ), name='l2'))
model_b.add(Activation('relu'))
model_b.add(Dense(3, name='cls'))
model_b.add(Activation('softmax'))

Modellgewichte speichern

Speichern Sie nach dem Anpassen der Daten für die Basis die Modellgewichte.

python


model_b.save_weights('my_model_weights.h5')

Bereiten Sie das Modell zum Einsetzen vor

Entspricht dem Namen der Ebene. In diesem Beispiel wird eine Dropout-Ebene hinzugefügt, um eine Überreflexion neuer Daten zu verhindern.

python


model_n = Sequential()
model_n.add(Dense(4, input_shape=(4, ), name='l1'))
model_n.add(Activation('relu'))
model_n.add(Dense(4, input_shape=(4, ), name='l2'))
model_n.add(Activation('relu'))
model_n.add(Dropout(0.5))
model_n.add(Dense(3, name='cls'))
model_n.add(Activation('softmax'))

Gewichte laden und lernen

Laden Sie die Gewichte in das neu erstellte Modell und trainieren Sie den Rest der Modelle.

python


#Gewichte laden
model_n.load_weights('my_model_weights.h5', by_name=True)

#kompilieren&Lauf
model_n.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model_n.fit(new_X, new_Y, epochs=50, batch_size=1, verbose=1)

Es scheint, dass es auch verwendet werden kann, wenn Sie die Datenmenge, die sich aufgrund des Speichers nicht dreht, separat lernen möchten.

Recommended Posts

Versuchen Sie die Feinabstimmung (Transferlernen), die bei Bildern mit Keras der Mainstream ist, mit Datenlernen
Implementierung einer "schrägen dreieckigen Lernrate" in Keras, die bei der BERT-Feinabstimmung wirksam ist
Beurteilung, ob es sich um mein Kind handelt oder nicht, nach dem Bild des Shiba-Hundes durch tiefes Lernen (2) Datenerhöhung, Transferlernen, Feinabstimmung
Versuchen Sie, das Fizzbuzz-Problem mit Keras zu lösen
Aufzeichnung der ersten Herausforderung des maschinellen Lernens mit Keras
(Deep Learning) Ich habe Bilder von der Flickr-API gesammelt und versucht, durch Transferlernen mit VGG16 zu unterscheiden
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
CNN mit Keras Versuchen Sie es mit dem Bild, das Sie aufgenommen haben
Verstärkungslernen in kürzester Zeit mit Keras mit OpenAI Gym
Versuchen Sie, Merkmale von Sensordaten mit CNN zu extrahieren