Path: blob/master/site/pt-br/guide/migrate/logging_stop_hook.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
Como migrar LoggingTensorHook e StopAtStepHook para callbacks Keras
No TensorFlow 1, você usa tf.estimator.LoggingTensorHook
para monitorar e registrar tensores, enquanto que tf.estimator.StopAtStepHook
ajuda a interromper o treinamento numa passo específico ao treinar com tf.estimator.Estimator
. Este notebook demonstra como migrar dessas APIs para seus equivalentes no TensorFlow 2 usando callbacks Keras personalizados (tf.keras.callbacks.Callback
) com Model.fit
.
Os callbacks do Keras são objetos chamados em diferentes pontos durante o treinamento/avaliação/previsão nas APIs integradas do Keras Model.fit
/Model.evaluate
/Model.predict
. Você pode aprender mais sobre callbacks na documentação da API tf.keras.callbacks.Callback
, bem como nos guias Escrevendo seus próprios callbacks e Treinamento e avaliação com os métodos integrados (na seção Usando callbacks). Para migrar de SessionRunHook
no TensorFlow 1 para callbacks do Keras no TensorFlow 2, confira o guia Como migrar treinamento com lógica assistida.
Configuração
Comece com os imports e um dataset simples para fins de demonstração:
TensorFlow 1: registre os tensores e interrompa o treinamento com as APIs tf.estimator
No TensorFlow 1, você define vários hooks para controlar o comportamento do treinamento. Depois você passa esses hooks para o tf.estimator.EstimatorSpec
.
No exemplo abaixo:
Para monitorar/registrar tensores, por exemplo, pesos ou perdas de modelos, você usa
tf.estimator.LoggingTensorHook
(tf.train.LoggingTensorHook
é um alias para a mesma classe).Para interromper o treinamento num determinado passo, use
tf.estimator.StopAtStepHook
(tf.train.StopAtStepHook
é um alias para a mesma classe).
TensorFlow 2: registre os tensores e interrompa o treinamento com callbacks personalizados e Model.fit
No TensorFlow 2, quando você usa o Keras Model.fit
integrado (ou Model.evaluate
) para treinamento/avaliação, pode configurar o monitoramento do tensor e a interrupção do treinamento definindo callbacks do Keras (tf.keras.callbacks.Callback
) personalizados. Em seguida, você os passa para o parâmetro callbacks
de Model.fit
(ou Model.evaluate
). (Saiba mais no guia Como escrever seus próprios callbacks)
No exemplo abaixo:
Para recriar as funcionalidades de
StopAtStepHook
, defina um retorno de chamada personalizado (denominadoStopAtStepCallback
abaixo) onde você substitui o métodoon_batch_end
para interromper o treinamento após um determinado número de passos.Para recriar o comportamento de
LoggingTensorHook
, defina um callback personalizado (LoggingTensorCallback
) onde você registra e gera os tensores registrados manualmente, pois não há suporte para o acesso a tensores por nomes. Você também pode implementar a frequência de registro do log dentro do callback personalizado. O exemplo abaixo imprimirá os pesos a cada dois passos. Outras estratégias, como registrar o log a cada N segundos, também são possíveis.
Quando terminar, passe os novos callbacks — StopAtStepCallback
e LoggingTensorCallback
— para o parâmetro callbacks
de Model.fit
:
Próximos passos
Saiba mais sobre callbacks em:
Documentação da API:
tf.keras.callbacks.Callback
Guia: Treinamento e avaliação com os métodos integrados (a seção Usando callbacks )
Você talvez também ache úteis os seguintes recursos relacionados à migração:
O Guia de migração de paradas antecipadas :
tf.keras.callbacks.EarlyStopping
é um callback integrado para paradas antecipadas (early stopping).O Guia de migração do TensorBoard: o TensorBoard permite rastrear e exibir métricas
O guia Treinamento com migração de lógica assistida: de
SessionRunHook
no TensorFlow 1 para callbacks do Keras no TensorFlow 2