El Early Stopping es una técnica de regularización que detiene el entrenamiento si, por ejemplo, la pérdida de validación alcanza un cierto umbral.
Cómo utilizar TensorFlow 2.0 con Python
Redes neuronales con TensorFlow
Introducción a TensorFlow 2.0
Manejo y preprocesamiento de datos para redes neuronales
Uso de data pipelines
Cómo cargar bases de datos JSON
Cargar bases de datos CSV y BASE 64
Preprocesamiento y limpieza de datos
Keras datasets
Datasets generators
Aprende a buscar bases de datos para deep learning
Cómo distribuir los datos
Crear la red neural, definir capas, compilar, entrenar, evaluar y predicciones
Optimización de precisión de modelos
Métodos de regularización: overfitting y underfitting
Recomendaciones prácticas para ajustar un modelo
Métricas para medir la eficiencia de un modelo: callback
Monitoreo del entrenamiento en tiempo real: early stopping y patience
KerasTuner: construyendo el modelo
KerasTuner: buscando la mejor configuración para tu modelo
Almacenamiento y carga de modelos
Almacenamiento y carga de modelos: pesos y arquitectura
Criterios para almacenar los modelos
Fundamentos de aprendizaje por transferencia
Introducción al aprendizaje por transferencia
Cuándo utilizar aprendizaje por transferencia
Carga de sistemas pre-entrenados en Keras
API funcional de Keras
Uso sistemas pre-entrenados de TensorFlow Hub
Resultados de entrenamiento
Introducción a variables relevantes del TensorBoard
Análisis y publicación de resultados del entrenamiento
Introducción al despliegue de modelos en producción
Siguientes pasos con deep learning
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Ya sabes como implementar tus propios callbacks personalizados, ahora indagaremos en los callbacks inteligentes que TensorFlow ha creado para nosotros, uno de ellos es early stopping, una técnica que detendrá el entrenamiento si no mejora después de algunas iteraciones.
Antes de implementar esta funcionalidad, vamos a generalizar la creación del modelo mediante una función, de esta manera no tendremos que hardcodear cada modelo nuevo.
python
def get_model():
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(75, (3,3), activation = "relu", input_shape = (28, 28, 1)),
tf.keras.layers.MaxPool2D((2,2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(256, kernel_regularizer = regularizers.l2(1e-5), activation = "relu"),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(128, kernel_regularizer = regularizers.l2(1e-5), activation = "relu"),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(len(classes), activation = "softmax")
])
return model
Definiremos una instancia de modelo, la resumiremos y compilaremos.
```python model_early = get_model() model_early.summary()
model_callback.compile(optimizer = "adam", loss = "categorical_crossentropy", metrics = ["accuracy"]) ```
Crearemos nuestro callback de early stopping, para esto usaremos la respectiva clase de Keras que recibirá 3 parámetros: El monitor (que será la variable que vamos a monitorear o vigilar, en este caso será la pérdida).
La paciencia (que será la tolerancia que tendrá el modelo antes de que pare, si en 3 épocas la pérdida no baja entonces se terminará el entrenamiento) y el modo (que determinará si buscamos la reducción o el aumento de la métrica, en este caso lo dejamos en detección automática).
python
callback_early = tf.keras.callbacks.EarlyStopping(monitor = "loss", patience = 3, mode = "auto")
Lo inyectamos al entrenamiento en la sección de callbacks y esperamos el entrenamiento.
python
history_early = model_early.fit(
train_generator,
epochs = 20,
callbacks = [callback_early],
validation_data = validation_generator
)
Si la condición se cumple y rompe la paciencia definida, entonces el modelo dejará de entrenar prematuramente, esto será extremadamente útil para detectar que la red no está aprendiendo más y que es contraproducente continuar con el entrenamiento, con esto ahorraremos tiempo y valiosos recursos que podremos invertir en iterar sobre nuestro modelo.
Contribución creada por Sebastián Franco Gómez.
Aportes 6
Preguntas 1
El Early Stopping es una técnica de regularización que detiene el entrenamiento si, por ejemplo, la pérdida de validación alcanza un cierto umbral.
La función de visualización no va a funcionar porque la función itera sobre los 20 epoch definidos y la función de EarlyStopping se detiene antes.
Para visualizar debes cambiar esta linea donde dice 20 y poner un número inferior dependiendo de la época en la que se detuvo
epochs = [i for i in range(20)]
En los apuntes hay que corregir esta parte:
model_early = get_model()
model_early.summary()
model_callback.compile(optimizer = "adam", loss = "categorical_crossentropy", metrics = ["accuracy"])
No es model_callback sino model_early
sin duda el early stopping es el mejor argumento de ejecución que he conocido!!
ahorra tiempo y ayuda a mejorar el modell
Los Callbacks son objetos que se usan para personalizar el entrenamiento de una red neuronal.
Los Early Stopping: Detiene el entrenamiento, cuando mejora la función de perdida; O sea cuando el conjunto de validación se estanca o comienza a disminuir.
De está forma se evita que la red continue su entrenamiento sin mejorar su capacidad de generalizar la data, lo que podría llevar a un sobre ajuste.
Al detener el entrenamiento tempranamente, se obtiene una red con mayor capacidad de generalizar.
Lo que hace es detener las épocas (iteraciones), si el modelo no genera una mejora. Se busca evitar el Overfiting.
Tamaño del conjunto de validación
Umbral de paciencia
Métricas de seguimiento
La parada temprana y la paciencia son técnicas esenciales para prevenir el sobreajuste y mejorar la generalización del modelo. Al implementar y ajustar cuidadosamente estas técnicas, se pueden entrenar redes neuronales que funcionen bien no solo con datos de entrenamiento sino también con datos invisibles, lo que genera modelos más robustos y confiables.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?