Speichern Sie das Modell alle 10 Epochen tensorflow.keras v2

10

Ich verwende Keras, die in Tensorflow v2 als Submodul definiert sind. Ich trainiere mein Modell mit fit_generator()Methode. Ich möchte mein Modell alle 10 Epochen speichern. Wie kann ich das erreichen?

In Keras (nicht als Submodul von tf) kann ich geben ModelCheckpoint(model_savepath,period=10). Aber in tf v2 haben sie dies dahingehend geändert, ModelCheckpoint(model_savepath, save_freq)wo es sein save_freqkann. 'epoch'In diesem Fall wird das Modell in jeder Epoche gespeichert. Wenn save_freqes sich um eine Ganzzahl handelt, wird das Modell gespeichert, nachdem so viele Stichproben verarbeitet wurden. Aber ich möchte, dass es nach 10 Epochen ist. Wie kann ich das erreichen?

Nagabhushan SN
quelle

Antworten:

5

Verwenden Sie tf.keras.callbacks.ModelCheckpointuse save_freq='epoch'und übergeben Sie ein zusätzliches Argument period=10.

Obwohl dies nicht in den offiziellen Dokumenten dokumentiert ist, ist dies der richtige Weg (beachten Sie, dass dokumentiert ist, dass Sie bestehen können period, erklärt nur nicht, was es tut).

Bluesummers
quelle
Ich erhalte die folgende Warnung: WARNING:tensorflow:'period' argument is deprecated. Please use 'save_freq' to specify the frequency in number of samples seen.Ich denke, diese Funktion wird bald verfügbar sein. Wie kann ich in diesem Fall dies erreichen?
Nagabhushan SN
2
Ich glaube, dass die einzige Alternative darin besteht, die Anzahl der Beispiele pro Epoche zu berechnen und diese Ganzzahl save_freqals Intervall zwischen den Speicherungen an die mal so viele Epochen zu übergeben, wie Sie möchten
Bluesummers
@bluesummers "Beispiele pro Epoche" Dies sollte meine Chargengröße sein, oder?
Tom
Beispiele pro Epoche sind die Anzahl der Samples, die Sie zwischen Checkpoints durch das Netzwerk leiten möchten. Wenn Sie also 100 Samples haben (Samples! = Batch, Batch ist ein Batch von Samples) und 400 Samples einsetzen, werden alle 4 Epochen
Bluesummers
1
Ich hatte die gleiche Frage wie von @NagabhushanSN. Ich habe die Anzahl der Samples pro Epoche berechnet, um die Anzahl der Samples zu berechnen, nach denen ich das Modell speichern möchte, aber es scheint nicht zu funktionieren. Chargengröße = 64, für den Testfall verwende ich 10 Schritte pro Epoche. Wenn ich das Modell alle 3 Epochen speichern möchte, beträgt die Anzahl der Samples 64 * 10 * 3 = 1920. Ich benutze das für sav_freq, aber die Ausgabe zeigt, dass das Modell in Epoche 1, Epoche 2, Epoche 9, Epoche 11, Epoche 14 gespeichert ist und noch läuft. Kann keinen Sinn daraus machen. periodOption scheint gut zu funktionieren, aber mit der Meldung, dass es veraltet sein wird.
Beeprogrammer