Le point de contrôle Model Keras ne fonctionne pas

8

J'essaie de former un modèle en keras et j'utilise ModelCheckpoint pour enregistrer le meilleur modèle selon une métrique de validation surveillée (dans mon cas, l' indice Jaccard ).

Bien que je puisse voir le modèle s'améliorer dans le tensorboard, lorsque j'essaie de charger les poids et d'évaluer le modèle, il ne fonctionne pas du tout. De plus, par l'horodatage du fichier où les poids sont censés être stockés, je peux dire qu'ils ne sont pas du tout enregistrés. L'horodatage correspond à peu près au moment où j'ai commencé la formation.

Quelqu'un a-t-il déjà rencontré un tel problème?

ILM91
la source

Réponses:

7

Exécutez-vous ModelCheckpointsur ses paramètres par défaut (en plus monitor)?

ModelCheckpointa un paramètre appelé modequi spécifie le type de métrique à utiliser. modepeut prendre 3 valeurs 'min' 'max'et 'auto'(qui est la valeur par défaut):

  • min: signifie que vous souhaitez minimiser la métrique (par exemple la fonction de perte).
  • max: signifie que vous souhaitez maximiser la métrique (par exemple, la précision).
  • auto: tente de comprendre quoi faire par lui-même. Si vous regardez le code , il vérifie si le nom de la métrique contient 'acc'ou s'il commence par 'fmeasure'. Si oui, il définit le mode sur max, sinon il le définit sur min.

Dans votre cas, vous surveillez l'index jaccard, qui est une métrique que vous souhaitez maximiser, vous voulez donc que le mode soit défini sur max. Normalement, parce que "jaccard" contient la chaîne "acc", même si le mode est défini, autoil devrait fonctionner correctement.

Si toutefois vous avez nommé votre métrique quelque chose d'arbitraire (par exemple my_metric), le mode par défaut sera défini sur min, ce qui signifie qu'il stockera les poids qui atteignent le moins de performances sur votre métrique, qui devraient être les poids de la première époque.

Suggestion : essayez la prochaine fois avec mode='max'pour être sûr.

MzdR
la source
Oui, tu as raison. J'avais nommé ma métrique intersection_over_unionet c'était probablement en stockant les poids qui avaient le score le plus bas, qui étaient ceux de la première époque. Cela a du sens. Merci!
ILM91
Je vous en prie. Heureux d'avoir pu aider!
MzdR