20.10 Construyendo redes neuronales con Keras y TensorFlow: usando devoluciones de llamada y guardando modelos

El desarrollo de redes neuronales a través de bibliotecas como Keras y TensorFlow ha simplificado significativamente el proceso de creación y entrenamiento de modelos de aprendizaje profundo. Keras, una API de alto nivel que se ejecuta sobre TensorFlow, permite a los usuarios crear redes neuronales de una manera intuitiva y accesible. Una parte clave de este proceso es el uso de devoluciones de llamada y modelos de guardado, que son esenciales para gestionar de manera eficiente la capacitación y preservar los modelos entrenados.

Comprensión de las devoluciones de llamada en Keras

Las devoluciones de llamada son funciones que se pueden aplicar en diferentes etapas del entrenamiento de una red neuronal, como al principio y al final de cada época, antes o después de que se procese un lote, o incluso después de finalizar el entrenamiento. Estas funciones son herramientas poderosas para monitorear el rendimiento del modelo, realizar ajustes dinámicos, guardar el progreso, cambiar las tasas de aprendizaje, detener el entrenamiento prematuramente y más.

Usar devoluciones de llamada en Keras es bastante simple. Se pasan como argumentos en la función fit() de la plantilla. Keras viene con varias devoluciones de llamada predefinidas, pero también puedes crear tus propias devoluciones de llamada personalizadas.

Devoluciones de llamada más comunes

  • ModelCheckpoint: Esta devolución de llamada guarda el modelo después de cada época. Puede configurarlo para guardar solo el mejor modelo según una métrica de rendimiento específica, como precisión o pérdida de validación.
  • EarlyStopping: le permite detener el entrenamiento tan pronto como una métrica monitoreada deja de mejorar, evitando así el sobreajuste y ahorrando tiempo y recursos computacionales.
  • ReduceLROnPlateau: reduce la tasa de aprendizaje cuando una métrica de rendimiento deja de mejorar, lo que permite realizar ajustes más precisos en los pesos de la red neuronal.
  • TensorBoard: Integración con TensorBoard, una herramienta de visualización para TensorFlow, que le permite monitorear métricas, visualizar gráficos de cálculo, distribuciones de activación y más.

Guardar y cargar plantillas

Además de las devoluciones de llamada, es fundamental saber cómo guardar y cargar modelos correctamente. Keras ofrece varias formas de guardar un modelo, incluida la arquitectura, los pesos e incluso el estado del optimizador. Esto es extremadamente útil para reanudar el entrenamiento más tarde o para realizar inferencias en un entorno de producción.

La función save() se puede utilizar para guardar un modelo completo en un solo archivo, que puede ser un archivo HDF5 o un directorio de TensorFlow SavedModel. Para cargar un modelo guardado, simplemente use la función load_model(). Además, puede guardar solo la arquitectura del modelo en formato JSON o YAML y los pesos en un archivo HDF5 por separado.

Ejemplo práctico de devoluciones de llamada y rescate

Veamos cómo utilizar algunos de estos recursos en la práctica. Supongamos que estamos entrenando una red neuronal para clasificar imágenes en un conjunto de datos:


desde keras.models importar secuencial
de keras.layers importar Denso
de keras.callbacks importar ModelCheckpoint, EarlyStopping
de keras.datasets importar cifar10

# Cargando y preparando datos
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
x_train = x_train.astype('float32') / 255
x_test = x_test.astype('float32') / 255

# Construyendo el modelo
modelo = Secuencial([
    Denso(512, activación='relu', input_shape=(32 * 32 * 3,)),
    Denso(256, activación='relu'),
    Denso(10, activación='softmax')
])

model.compile(optimizador='adam',
              pérdida='sparse_categorical_crossentropy',
              métricas = ['precisión'])

# Configurar devoluciones de llamada
punto de control = ModelCheckpoint('best_model.h5', save_best_only=True, monitor='val_loss', modo='min')
early_stopping = EarlyStopping(monitor='val_loss', paciencia=5)

# Entrenando el modelo
historia = modelo.fit(x_train, y_train,
                    épocas = 100,
                    tamaño_lote = 64,
                    datos_validación=(prueba_x, prueba_y),
                    devoluciones de llamada=[punto de control, parada_temprana])

En este ejemplo, la devolución de llamada ModelCheckpoint está configurada para guardar el mejor modelo en función de la pérdida de validación. EarlyStopping detendrá el entrenamiento si la pérdida de validación no mejora después de cinco épocas consecutivas. Después del entrenamiento, podemos cargar el mejor modelo guardado usando load_model('best_model.h5').

Consideraciones finales

El uso de devoluciones de llamada y modelos de guardado en Keras son prácticas que pueden mejorar significativamente la eficiencia y eficacia del proceso de entrenamiento de redes neuronales. Con la capacidad de monitorear el desempeño, hagaAl realizar ajustes automáticos y preservar el estado del modelo, los desarrolladores pueden centrarse en otras áreas importantes, como la preparación de datos y la arquitectura de red. Keras y TensorFlow ofrecen una gama de herramientas que, cuando se usan bien, pueden generar resultados impresionantes en proyectos de aprendizaje automático y aprendizaje profundo.

Ahora responde el ejercicio sobre el contenido:

¿Cuál de las siguientes afirmaciones sobre el uso de devoluciones de llamada y guardado de modelos en Keras es correcta?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Construcción de redes neuronales con Keras y TensorFlow: ajuste y transferencia de aprendizaje

Siguiente página del libro electrónico gratuito:

78Construcción de redes neuronales con Keras y TensorFlow: ajuste y transferencia de aprendizaje

5 minutos

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.