Salvar modelo a cada 10 épocas tensorflow.keras v2

10

Estou usando o keras definido como submódulo no tensorflow v2. Estou treinando meu modelo usando o fit_generator()método Quero salvar meu modelo a cada 10 épocas. Como posso conseguir isso?

Em Keras (não como um submódulo de tf), eu posso dar ModelCheckpoint(model_savepath,period=10). Mas na t2 v2, eles mudaram isso para ModelCheckpoint(model_savepath, save_freq)onde save_freqpode estar; 'epoch'nesse caso, o modelo é salvo a cada época. Se save_freqfor inteiro, o modelo será salvo após o processamento de tantas amostras. Mas quero que seja depois de 10 épocas. Como posso conseguir isso?

Nagabhushan SN
fonte

Respostas:

5

Usando tf.keras.callbacks.ModelCheckpointuse save_freq='epoch'e passe um argumento extra period=10.

Embora isso não esteja documentado nos documentos oficiais , essa é a maneira de fazer isso (observe que está documentado que você pode passar period, apenas não explica o que faz).

bluesummers
fonte
Recebo o aviso abaixo: WARNING:tensorflow:'period' argument is deprecated. Please use 'save_freq' to specify the frequency in number of samples seen.Acho que esse recurso será lançado em breve. Nesse caso, como posso conseguir isso?
Nagabhushan SN 27/11/19
2
Eu acredito que a única alternativa é calcular o número de exemplos por época, e passar esse inteiro de save_freqvezes o número de épocas que você quer como intervalo entre salva
bluesummers
@bluesummers "exemplos por época" Esse deve ser o tamanho do meu lote, certo?
Tom
Exemplos por época é quantas amostras você deseja passar pela rede entre os pontos de verificação - isso significa que se você tiver 100 amostras (amostras! = Lote, lote é um lote de amostras) e você colocar 400, ele salvará a cada 4 épocas
bluesummers
11
Eu tive a mesma pergunta que a @NagabhushanSN. Calculei o número de amostras por época para calcular o número de amostras após as quais desejo salvar o modelo, mas ele não parece funcionar. Tamanho do lote = 64, para o caso de teste, estou usando 10 etapas por época. Se eu quiser salvar o modelo a cada três épocas, o número de amostras é 64 * 10 * 3 = 1920. Eu uso isso para sav_freq, mas a saída mostra que o modelo é salvo na época 1, época 2, época 9, época 11, época 14 e ainda em execução. Não dá para entender. periodA opção parece funcionar bem, mas com a mensagem de que será preterida.
beeprogrammer