Path: blob/master/site/es-419/guide/migrate/early_stopping.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
Cómo migrar con parada anticipada
En este bloc de notas se muestra cómo se puede preparar un modelo de entrenamiento con parada anticipada, en primer lugar, en TensorFlow 1 con tf.estimator.Estimator
y un hook de parada anticipada, y después, en TensorFlow 2 con las APIs de Keras o un bucle de entrenamiento personalizado. La parada anticipada es una técnica de regularización que detiene el entrenamiento si, por ejemplo, la pérdida de validación alcanza un cierto umbral.
En TensorFlow 2, hay tres formas de implementar la parada anticipada:
Utilice una retrollamada integrada de Keras -
tf.keras.callbacks.EarlyStopping
- y transfiérala aModel.fit
.Defina una retrollamada personalizada y transfiérala a Keras
Model.fit
.Escriba una regla de parada anticipada personalizada en un bucle de entrenamiento personalizado (con
tf.GradientTape
).
Preparación
TensorFlow 1: Parada anticipada con un hook de parada anticipada y tf.estimator
Comience definiendo las funciones para la carga y el preprocesamiento del conjunto de datos MNIST, y la definición del modelo que se utilizará con tf.estimator.Estimator
:
En TensorFlow 1, la parada anticipada funciona configurando un anzuelo de parada anticipada con tf.estimator.experimental.make_early_stopping_hook
. El anzuelo se transfiere al método make_early_stopping_hook
como parámetro para should_stop_fn
, que puede aceptar una función sin argumentos. El entrenamiento se detiene una vez que should_stop_fn
devuelve True
.
En el siguiente ejemplo se muestra cómo implementar una técnica de parada anticipada que limita el tiempo de entrenamiento a un máximo de 20 segundos:
TensorFlow 2: Parada anticipada con una retrollamada incorporada y Model.fit
Prepare el conjunto de datos MNIST y un modelo Keras simple:
En TensorFlow 2, cuando se utiliza la función incorporada de Keras Model.fit
(o Model.evaluate
), se puede configurar la parada anticipada transfiriendo una retrollamada incorporada -tf.keras.callbacks.EarlyStopping
- al parámetro callbacks
de Model.fit
.
La retrollamada EarlyStopping
monitoriza una métrica que especifica el usuario y finaliza el entrenamiento cuando deja de mejorar. (Consulte Entrenamiento y evaluación con los métodos incorporados o los Documentos de la API para obtener más información).
A continuación se muestra un ejemplo de una retrollamada de parada anticipada que monitoriza la pérdida y detiene el entrenamiento después de que el número de épocas que no muestran mejoras se establece en 3
( patience
):
TensorFlow 2: Parada temprana con una retrollamada personalizada y Model.fit
También puede implementar una retrollamada personalizada de parada anticipada, que también puede transferirse al parámetro callbacks
de Model.fit
(o Model.evaluate
).
En este ejemplo, el proceso de entrenamiento se detiene una vez que self.model.stop_training
se establece en True
:
TensorFlow 2: Parada anticipada con un bucle de entrenamiento personalizado
En TensorFlow 2, puede implementar la parada anticipada en un bucle de entrenamiento personalizado si no está entrenando y evaluando con los métodos de Keras incorporados.
Comience utilizando las APIs de Keras para definir otro modelo simple, un optimizador, una función de pérdida y métricas:
Defina las funciones de actualización de parámetros con tf.GradientTape y el decorador @tf.function
para una aceleración:
A continuación, escriba un bucle de entrenamiento personalizado, en el que podrá implementar manualmente su regla de parada anticipada.
En el siguiente ejemplo se muestra cómo detener el entrenamiento cuando la pérdida de validación no mejora en un determinado número de épocas:
Siguientes pasos
Obtenga más información sobre la API de retrollamada de parada anticipada incorporada de Keras en los documentos sobre la API.
Descubra cómo escribir retrollamadas personalizadas de Keras, incluida la parada anticipada con una pérdida mínima.
Obtenga más información sobre El entrenamiento y la evaluación con los métodos incorporados de Keras.
Explore técnicas comunes de regularización en el tutorial Sobreajuste y subajuste que utiliza la retrollamada
EarlyStopping
.