Cómo utilizar TensorFlow 2.0 con Python

1

Redes neuronales con TensorFlow

2

Introducción a TensorFlow 2.0

Manejo y preprocesamiento de datos para redes neuronales

3

Uso de data pipelines

4

Cómo cargar bases de datos JSON

5

Cargar bases de datos CSV y BASE 64

6

Preprocesamiento y limpieza de datos

7

Keras datasets

8

Datasets generators

9

Aprende a buscar bases de datos para deep learning

10

Cómo distribuir los datos

11

Crear la red neural, definir capas, compilar, entrenar, evaluar y predicciones

Optimización de precisión de modelos

12

Métodos de regularización: overfitting y underfitting

13

Recomendaciones prácticas para ajustar un modelo

14

Métricas para medir la eficiencia de un modelo: callback

15

Monitoreo del entrenamiento en tiempo real: early stopping y patience

16

KerasTuner: construyendo el modelo

17

KerasTuner: buscando la mejor configuración para tu modelo

Almacenamiento y carga de modelos

18

Almacenamiento y carga de modelos: pesos y arquitectura

19

Criterios para almacenar los modelos

Fundamentos de aprendizaje por transferencia

20

Introducción al aprendizaje por transferencia

21

Cuándo utilizar aprendizaje por transferencia

22

Carga de sistemas pre-entrenados en Keras

23

API funcional de Keras

24

Uso sistemas pre-entrenados de TensorFlow Hub

Resultados de entrenamiento

25

Introducción a variables relevantes del TensorBoard

26

Análisis y publicación de resultados del entrenamiento

27

Introducción al despliegue de modelos en producción

28

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

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

14 Días
14 Hrs
13 Min
58 Seg

Monitoreo del entrenamiento en tiempo real: early stopping y patience

15/28
Recursos

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.

Early stopping y patience en el código

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

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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.

Consideraciones adicionales:

Tamaño del conjunto de validación

  • utilice un conjunto de validación suficientemente grande para proporcionar una estimación confiable del rendimiento de generalización del modelo.

Umbral de paciencia

  • Elija un valor de paciencia adecuado según la complejidad del modelo y el conjunto de datos de entrenamiento. Un valor de paciencia demasiado pequeño puede provocar una parada prematura, mientras que un valor demasiado grande puede permitir que se produzca un sobreajuste.

Métricas de seguimiento

  • Supervise otras métricas además de la pérdida, como la exactitud o la precisión, para obtener una comprensión más completa del rendimiento del modelo.

Conclusión

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.