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)où 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?

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).


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.