Path: blob/master/site/es-419/guide/migrate/logging_stop_hook.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
Cómo migrar LoggingTensorHook y StopAtStepHook a las retrollamadas de Keras
En TensorFlow 1, se utiliza tf.estimator.LoggingTensorHook
para monitorizar y registrar tensores, mientras que tf.estimator.StopAtStepHook
ayuda a detener el entrenamiento en un paso específico cuando se entrena con tf.estimator.Estimator
. Este bloc de notas muestra cómo migrar de estas API a sus equivalentes en TensorFlow 2 mediante retrollamadas personalizadas de Keras (tf.keras.callbacks.Callback
) con Model.fit
.
Las retrollamadas de Keras son objetos que se llaman en diferentes puntos durante el entrenamiento/evaluación/predicción en las API incorporadas de Keras Model.fit
/Model.evaluate
/Model.predict
. Puede obtener más información sobre las retrollamadas en la documentación de la API tf.keras.callbacks.Callback
, así como en las guías Escribiendo sus propias retrollamadas y Entrenamiento y evaluación con los métodos incorporados (la sección Usando retrollamadas). Para migrar de SessionRunHook
a TensorFlow 1 mediante las retrollamadas de Keras en TensorFlow 2, consulte la guía del entrenamiento para migrar con lógica asistida.
Preparación
Empiece con imports y un conjunto de datos sencillo a modo de demostración:
TensorFlow 1: Registro de tensores y parada del entrenamiento con las API de tf.estimator
En TensorFlow 1, se definen varios hooks para controlar el comportamiento del entrenamiento. Posteriormente, se pasan estos hooks a tf.estimator.EstimatorSpec
.
En el siguiente ejemplo:
Para monitorear o registrar tensores, por ejemplo, pesos o pérdidas del modelo, se utiliza
tf.estimator.LoggingTensorHook
(tf.train.LoggingTensorHook
es su alias).Para detener el entrenamiento en un paso específico, se utiliza
tf.estimator.StopAtStepHook
(tf.train.StopAtStepHook
es su alias).
TensorFlow 2: Registrar tensores y detener el entrenamiento con retrollamadas personalizadas y Model.fit
En TensorFlow 2, cuando se utiliza Keras Model.fit
(o Model.evaluate
) para el entrenamiento/evaluación, se puede configurar la monitorización del tensor y la parada del entrenamiento definiendo Keras tf.keras.callbacks.Callback
s personalizado. Luego, los puede transferir al parámetro callbacks
de Model.fit
(o Model.evaluate
). (Obtenga más información en la guía Escribiendo sus propias retrollamadas).
En el siguiente ejemplo:
Para recrear las funcionalidades de
StopAtStepHook
, defina una retrollamada personalizada (denominadaStopAtStepCallback
) en la que anule el métodoon_batch_end
para parar el entrenamiento después de un determinado número de pasos.Para recrear el comportamiento de
LoggingTensorHook
, defina una retrollamada personalizada (LoggingTensorCallback
) en la que registre y extraiga manualmente los tensores registrados, ya que no es posible acceder a los tensores por su nombre. También puede implementar la frecuencia de registro dentro de la retrollamada personalizada. En el siguiente ejemplo se imprimirán los pesos cada dos pasos. También son posibles otras estrategias como el registro cada N segundos.
Cuando termine, transfiera las nuevas retrollamadas -StopAtStepCallback
y LoggingTensorCallback
al parámetro callbacks
de Model.fit
:
Siguientes pasos
Obtenga más información sobre las retrollamadas en:
Documentos de la API:
tf.keras.callbacks.Callback
Guía: Entrenamiento y evaluación con los métodos incorporados (la sección Usar retrollamadas)
También le pueden resultar útiles los siguientes recursos relacionados con la migración:
La Guía de migración de parada anticipada:
tf.keras.callbacks.EarlyStopping
es una retrollamada de parada anticipada incorporada.La Guía de migración de TensorBoard: TensorBoard permite el seguimiento y la visualización de métricas
La guía del entrenamiento para migrar a la lógica asistida: De
SessionRunHook
en TensorFlow 1 a las retrollamadas de Keras en TensorFlow 2