Der ModelCheckpoint von keras funktioniert nicht


8

Ich versuche, ein Modell in Keras zu trainieren, und verwende ModelCheckpoint , um das beste Modell gemäß einer überwachten Validierungsmetrik (in meinem Fall dem Jaccard-Index ) zu speichern .

Während ich sehe, dass sich das Modell im Tensorboard verbessert, funktioniert es überhaupt nicht, wenn ich versuche, die Gewichte zu laden und das Modell zu bewerten. Anhand des Zeitstempels in der Datei, in der die Gewichte gespeichert werden sollen, kann ich außerdem erkennen, dass sie überhaupt nicht gespeichert werden. Der Zeitstempel entspricht ungefähr der Zeit, zu der ich mit dem Training begonnen habe.

Hat jemand schon einmal auf ein solches Problem gestoßen?

Antworten:


7

Führen Sie ModelCheckpoint(außerdem monitor) die Standardparameter aus ?

ModelCheckpointhat einen Parameter namens, modeder den Typ der zu verwendenden Metrik angibt . modekann 3 Werte annehmen 'min' 'max'und 'auto'(was die Standardeinstellung ist):

  • min: bedeutet, dass Sie die Metrik minimieren möchten (z. B. die Verlustfunktion).
  • max: bedeutet, dass Sie die Metrik maximieren möchten (z. B. Genauigkeit).
  • auto: versucht selbst herauszufinden, was zu tun ist. Wenn Sie sich den Code ansehen , wird geprüft, ob der Name der Metrik enthält 'acc'oder ob er mit beginnt 'fmeasure'. Wenn ja, wird der Modus auf eingestellt max, wenn nicht, wird der Modus auf eingestellt min.

In Ihrem Fall überwachen Sie den Jaccard-Index, eine Metrik, die Sie maximieren möchten, sodass der Modus eingestellt werden soll max. Normalerweise sollte "jaccard" die Zeichenfolge "acc" enthalten, auch wenn der Modus darauf eingestellt ist, autosollte dies einwandfrei funktionieren.

Wenn Sie Ihre Metrik jedoch willkürlich benannt haben (z. B. my_metric), wird der Standardmodus auf gesetzt min. Dies bedeutet, dass die Gewichte gespeichert werden, die die geringste Leistung für Ihre Metrik erzielen. Dies sollten die Gewichte der ersten Epoche sein.

Vorschlag : Versuchen Sie es beim nächsten Mal mit mode='max', um sicherzugehen.


Ja, du hast recht. Ich hatte meine Metrik benannt intersection_over_unionund es wurden wahrscheinlich Gewichte mit der niedrigsten Punktzahl gespeichert, die aus der ersten Epoche stammten. Das macht sehr viel Sinn. Vielen Dank!
ILM91

Bitte. Froh, dass ich helfen konnte!
MzdR
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.