Path: blob/master/site/pt-br/guide/migrate/logging_stop_hook.ipynb
39075 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 (denominadoStopAtStepCallbackabaixo) onde você substitui o métodoon_batch_endpara 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.CallbackGuia: 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
SessionRunHookno TensorFlow 1 para callbacks do Keras no TensorFlow 2
Ver em TensorFlow.org
Executar no Google Colab
Ver fonte no GitHub
Baixar notebook