Keras ist eine Open-Source-Bibliothek für neuronale Netze, geschrieben in Python. Sie ist mit TensorFlow, Microsoft Cognitive Toolkit, R, Theano und PlaidML kompatibel. Ein wesentlicher Vorteil von Keras ist die Möglichkeit, Modelle für bestimmte Epochen zu exportieren, was bei der Modelloptimierung und Leistungsbewertung sehr hilfreich sein kann.
Aufgabenstellung:
Beim Training eines maschinellen Lernmodells überwachen wir normalerweise die Leistung der Verlust- oder Metrikfunktion für einige Validierungsdaten. Unterschiedliche Epochen können zu einer unterschiedlichen Modellleistung führen. Manchmal werden die besten Ergebnisse zu einem Zeitpunkt erzielt, der nicht dem Ende des Trainingsprozesses entspricht. In solchen Situationen wäre es praktisch, wenn wir das Keras-Modell in bestimmten Epochen speichern/exportieren könnten.
Lösung
Die Lösung für dieses Problem liegt in Keras Callbacks. Ein Callback ist ein Objekt (eine Klasseninstanz, die bestimmte Methoden implementiert), das im Fit-Aufruf an das Modell übergeben und vom Modell an verschiedenen Stellen während des Trainings aufgerufen wird. Es hat Zugriff auf alle verfügbaren Daten über den Zustand des Modells und seine Leistung.
Eine benutzerdefinierte Rückruffunktion ermöglicht es uns, Aktionen in verschiedenen Phasen des Trainings anzugeben, z. B. am Anfang oder Ende einer Epoche, vor oder nach einem einzelnen Batch usw. Eine solche Aktion könnte darin bestehen, das Modell in bestimmten Epochen zu speichern.
Schritt-für-Schritt-Erklärung des Kodex
Zuerst definieren wir einen benutzerdefinierten Rückruf, um das Modell in bestimmten Epochen zu speichern.
class CustomSaver(keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs={}):
if epoch == 9: # or save after some epoch, each k-th epoch etc.
self.model.save("model_{}.hd5".format(epoch))
Als Nächstes fügen wir diesen Rückruf zum Modellanpassungsprozess hinzu.
model = ... # create model model.compile(optimizer='...', loss='...') # compile model saver = CustomSaver() model.fit(..., callbacks=[saver]) # put your X_train, Y_train ...
Im obigen Code erstellen wir eine Instanz der CustomSaver-Klasse und übergeben sie dann als Teil der Rückrufliste an die Fit-Methode des Modells.
Durch Ändern der „if“-Bedingung innerhalb unserer „on_epoch_end“-Methode können wir den Rückruf nach jeder „k“-Epoche oder immer dann speichern, wenn eine bestimmte Bedingung erfüllt ist.
Keras-Bibliotheken und ihre Funktionen
Das schlanke, benutzerfreundliche Design von Keras vereinfacht die Erstellung und Änderung von Deep-Learning-Modellen. Es enthält mehrere Tools, wie Sequential- und Model-Klassen zum Erstellen von Modellen, verschiedene Schichten für neuronale Netze (Convolutional, Pooling, Dense usw.) und Callbacks für das Überwachungstraining.
Einer der nützlichsten Aspekte von Rückrufen ist das vorzeitige Beenden des Trainings oder das Speichern des besten Modells entsprechend der Validierungsleistung. Es handelt sich um eine so häufig nachgefragte Funktion, dass Keras bereits integrierte Rückrufe dafür enthält, bekannt als ModelCheckpoint und EarlyStopping.
Das ist es! Wenden Sie dieses Wissen nun auf Ihr Szenario an und speichern Sie das Keras-Modell in der Epoche, in der es die beste Leistung bietet. Viel Spaß beim Modeltraining!