Enregistrer le modèle toutes les 10 époques tensorflow.keras v2

10

J'utilise des keras définis comme sous-module dans tensorflow v2. J'entraîne mon modèle en utilisant la fit_generator()méthode. Je veux enregistrer mon modèle toutes les 10 époques. Comment puis-je atteindre cet objectif?

En Keras (pas en tant que sous-module de tf), je peux donner ModelCheckpoint(model_savepath,period=10). Mais dans tf v2, ils ont changé cela en ModelCheckpoint(model_savepath, save_freq)save_freqpeut-être, 'epoch'auquel cas le modèle est enregistré à chaque époque. Si save_freqest entier, le modèle est enregistré après que tant d'échantillons ont été traités. Mais je veux que ce soit après 10 époques. Comment puis-je atteindre cet objectif?

Nagabhushan SN
la source

Réponses:

5

Utiliser tf.keras.callbacks.ModelCheckpointuse save_freq='epoch'et passer un argument supplémentaireperiod=10 .

Bien que cela ne soit pas documenté dans les documents officiels , c'est la façon de le faire (notez qu'il est documenté que vous pouvez passer period, n'explique tout simplement pas ce qu'il fait).

bluesummers
la source
Je reçois l'avertissement ci-dessous: WARNING:tensorflow:'period' argument is deprecated. Please use 'save_freq' to specify the frequency in number of samples seen.Donc, je suppose que cette fonctionnalité va bientôt sortir. Dans ce cas, comment puis-je y parvenir?
Nagabhushan SN
2
Je crois que la seule alternative est de calculer le nombre d'exemples par époque, et de passer cet entier à save_freqfois le nombre d'époques que vous voulez comme intervalle entre les sauvegardes
bluesummers
@bluesummers "exemples par époque" Cela devrait être la taille de mon lot, non?
Tom
Les exemples par époque sont le nombre d' échantillons que vous souhaitez passer à travers le réseau entre les points de contrôle - cela signifie que si vous avez 100 échantillons (échantillons! = Lot, le lot est un lot d'échantillons) et que vous en mettez 400, cela sauvera toutes les 4 époques
bluesummers
1
J'avais la même question que celle posée par @NagabhushanSN. J'ai calculé le nombre d'échantillons par époque pour calculer le nombre d'échantillons après lequel je veux enregistrer le modèle mais cela ne semble pas fonctionner. Taille du lot = 64, pour le cas de test, j'utilise 10 étapes par époque. Si je veux enregistrer le modèle toutes les 3 époques, le nombre d'échantillons est de 64 * 10 * 3 = 1920. J'utilise cela pour sav_freq mais la sortie montre que le modèle est enregistré à l'époque 1, époque 2, époque 9, époque 11, époque 14 et fonctionne toujours. Je ne peux pas comprendre cela. periodL'option semble fonctionner correctement mais avec le message qu'elle sera déconseillée.
Programmeur d'abeilles