Criterios para almacenar los modelos
Clase 19 de 28 • Curso Profesional de Redes Neuronales con TensorFlow
Contenido del curso
- 3

Carga y Procesamiento de Bases de Datos en Inteligencia Artificial
02:48 - 4

Carga de Bases de Datos JSON desde GCP en Google Colab
10:25 - 5

Codificación Base64 y Gestión de Imágenes en Google Colab
12:50 - 6

Preprocesamiento y limpieza de datos
12:15 - 7

Keras datasets
10:14 - 8

Datasets generators
18:36 - 9

Aprende a buscar bases de datos para deep learning
04:14 - 10

Cómo distribuir los datos
06:50 - 11

Crear la red neural, definir capas, compilar, entrenar, evaluar y predicciones
14:35
- 12

Métodos de regularización: overfitting y underfitting
11:16 - 13

Recomendaciones prácticas para ajustar un modelo
12:00 - 14

Métricas para medir la eficiencia de un modelo: callback
08:18 - 15

Monitoreo del entrenamiento en tiempo real: early stopping y patience
07:04 - 16

KerasTuner: construyendo el modelo
13:54 - 17

KerasTuner: buscando la mejor configuración para tu modelo
08:45
En la práctica la carga de modelos no sucede de manera atómica (no se carga solo los pesos o solo la arquitectura), lo hacemos todo a la vez, tampoco almacenamos todos los modelos, únicamente guardamos en disco los mejores desempeños. Vamos al código para entender cómo lograrlo.
Mejorando el guardado de pesos
Definiremos un path para guardar nuestro nuevo modelo. En el ModelCheckpoint haremos una serie de modificaciones que cambiarán el cómo se guardará el modelo. El primero de ellos será la opción de save_weight_only, esta irá a falso, también agregaremos val_accuracy como monitor de desempeño y solo guardaremos la mejor versión del modelo.
```python checkpoint_path = "model_checkpoints_complete"
checkpoint_weight = ModelCheckpoint( filepath = checkpoint_path, frecuency = "epoch", save_weight_only = False, monitor = "val_accuracy", save_best_only = True, verbose = 1 ) ```
Crearemos un modelo nuevo para comprender cómo se guardan los datos.
```python model_complete = get_model() model_complete.compile(optimizer = "adam", loss = "categorical_crossentropy", metrics = ["accuracy"])
history_complete = model_complete.fit( train_generator, epochs = 20, callbacks = [checkpoint_weight], validation_data = validation_generator ) ```
Si durante el entrenamiento la red mejora en su val_accuracy, entonces se guardará en disco, si por el contrario no detecta una mejora, entonces ignorará esa iteración.
python
Epoch 1: val_accuracy improved from -inf to 0.77614, saving model to model_checkpoints_complete
Epoch 8: val_accuracy did not improve from 0.86175
Al final obtendremos de output un directorio con varios archivos, asegúrate de guardarlos todos de manera local, dado que si falta alguno la carga del modelo fallará.
Si deseas guardar la configuración entera manualmente, puedes hacer uso del método save de los modelos.
python
model_complete.save("saved_model_complete/mymodel")
Cargando modelos completos
Para cargar un modelo completo desde disco sin necesidad de crear una arquitectura vacía podemos usar la función load_model del módulo models de Keras indicando la ubicación del directorio.
python
model_complete3 = tf.keras.models.load_model("saved_model_complete/mymodel")
Si comparamos el rendimiento de test entre ambos modelos encontraremos que son exactamente el mismo, reflejando que la carga ha funcionado.
```python model_complete3.evaluate(test_generator) 57/57 [==============================] - 2s 41ms/step - loss: 0.6733 - accuracy: 0.8826 [0.6733485460281372, 0.8825989961624146]
model_complete.evaluate(test_generator) 57/57 [==============================] - 2s 41ms/step - loss: 0.6733 - accuracy: 0.8826 [0.673348605632782, 0.8825989961624146] ```
Carga y descarga desde archivos h5
Podemos guardar configuraciones enteras desde un archivo h5 que sintetizará toda la estructura de directorios vista anteriormente, para poder usarla debemos instalar pyyaml y h5py.
python
!pip install pyyaml h5py
Para guardar archivos como h5 bastará con modificar la extensión al final de la dirección a guardar. Para cargarlo bastará con indicar el archivo con extensión.
python
model_complete3.save("my_model.h5")
model_complete4 = tf.keras.models.load_model("my_model.h5")
Con esto ya tienes un amplio abanico para guardar y cargar modelos, desde la sola arquitectura hasta un historial completo o seleccionado de generaciones de entrenamiento.
Contribución creada por Sebastián Franco Gómez.