Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

TensorFlow desde cero, Unidad 8 — Optimización y ajuste de hiperparámetros, 8.2 — Estrategias prácticas ·

Callbacks

Callbacks

Introducción

En el camino hacia la optimización y ajuste de hiperparámetros, los callbacks son una herramienta fundamental en TensorFlow. Estos se utilizan para realizar acciones específicas durante diferentes etapas de la entrenabilidad de un modelo. Desde actualizar parámetros del optimizador hasta guardar pesos intermedios o detener el entrenamiento antes de que se sobreajuste, las posibilidades son numerosas.

Explicación principal con ejemplos

Ejemplo 1: Guardar pesos intermedios en discoteca

Un callback como ModelCheckpoint es útil para guardar los pesos del modelo a lo largo del entrenamiento. Esto puede ser crucial si se desea reutilizar el modelo después o para retomar un entrenamiento interrumpido.

from tensorflow.keras.callbacks import ModelCheckpoint

# Definir el callback para guardar pesos cada 10 épocas
checkpoint = ModelCheckpoint('mejores_pesos.h5', monitor='val_loss', save_best_only=True, mode='min', period=10)

# Entrenar el modelo con el callback
model.fit(X_train, y_train, epochs=100, validation_data=(X_val, y_val), callbacks=[checkpoint])

Ejemplo 2: Detener entrenamiento si la pérdida en validación no mejora

El EarlyStopping es otro ejemplo de callback que puede ser crucial para prevenir el sobreajuste. Este callback permite interrumpir el entrenamiento si se observa una disminución en las métricas deseadas.

from tensorflow.keras.callbacks import EarlyStopping

# Definir el callback de detección temprana
early_stopping = EarlyStopping(monitor='val_loss', patience=10, verbose=1, restore_best_weights=True)

# Entrenar el modelo con el callback
model.fit(X_train, y_train, epochs=50, validation_data=(X_val, y_val), callbacks=[early_stopping])

Ejemplo 3: Actualizar parámetros del optimizador en función de las métricas

El LearningRateScheduler permite ajustar dinámicamente el learning rate durante la entrenabilidad. Esto puede ser particularmente útil si se observa que la convergencia es lenta o si se desea acelerarla después de cierto punto.

from tensorflow.keras.callbacks import LearningRateScheduler

# Definir una función para actualizar el learning rate
def scheduler(epoch, lr):
    if epoch < 30:
        return lr
    else:
        return lr * 0.1

# Crear un callback basado en la función definida anteriormente
scheduler_callback = LearningRateScheduler(scheduler)

# Entrenar el modelo con el callback
model.fit(X_train, y_train, epochs=50, validation_data=(X_val, y_val), callbacks=[scheduler_callback])

Errores típicos / trampas

  1. Usar save_best_only=False: Si se configura save_best_only=False, el modelo guardará los pesos después de cada época, lo que puede resultar en un uso innecesario de espacio de almacenamiento.
  1. Ignorar la configuración adecuada para patience en EarlyStopping: Si se establece una patience demasiado baja, el entrenamiento puede detenerse prematuramente antes de que se muestre un cambio significativo en las métricas deseadas.
  1. No usar restore_best_weights=True con EarlyStopping: Si este parámetro no está configurado, el modelo no utilizará los pesos del mejor punto en el entrenamiento, lo que puede resultar en una pérdida de rendimiento.

Checklist accionable

  1. Elija correctamente el callback adecuado para su caso de uso.
  2. Configure patience y mode cuidadosamente en EarlyStopping.
  3. Asegúrese de usar restore_best_weights=True con EarlyStopping.
  4. Use save_best_only=True si desea minimizar el uso de almacenamiento.
  5. Defina una función adecuada para actualizar dinámicamente los parámetros del optimizador.

Cierre: Siguientes pasos

  • Repase las mejores prácticas de entrenabilidad con TensorFlow y ajuste sus callbacks según sea necesario.
  • Experimente con diferentes tipos de callbacks para ver cómo impactan en el rendimiento de su modelo.
  • Asegúrese de documentar bien los callbacks utilizados para facilitar futuras iteraciones del proyecto.

Siguiendo estos consejos, podrá optimizar aún más la entrenabilidad de sus modelos y mejorar significativamente su rendimiento.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).