En este tema, aprenderemos cómo guardar y cargar modelos en TensorFlow. Esta habilidad es crucial para poder reutilizar modelos entrenados, compartirlos con otros, o desplegarlos en producción. TensorFlow ofrece varias formas de guardar y cargar modelos, y en esta sección cubriremos las más comunes y efectivas.
Contenido
Introducción
Guardar y cargar modelos en TensorFlow se puede hacer de dos maneras principales:
- Guardar y cargar el modelo completo.
- Guardar y cargar solo los pesos del modelo.
Ambas técnicas tienen sus propias ventajas y desventajas, y la elección entre ellas depende del caso de uso específico.
Guardado de Modelos
Guardar el Modelo Completo
Guardar el modelo completo incluye tanto la arquitectura del modelo como los pesos y el optimizador. Esto se hace utilizando el método model.save()
.
import tensorflow as tf # Definimos un modelo simple model = tf.keras.Sequential([ tf.keras.layers.Dense(10, activation='relu', input_shape=(784,)), tf.keras.layers.Dense(10, activation='softmax') ]) # Compilamos el modelo model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # Guardamos el modelo completo model.save('my_model.h5')
Guardar Solo los Pesos del Modelo
Si solo necesitas guardar los pesos del modelo, puedes usar el método model.save_weights()
.
Carga de Modelos
Cargar el Modelo Completo
Para cargar un modelo completo, utilizamos el método tf.keras.models.load_model()
.
Cargar Solo los Pesos del Modelo
Para cargar solo los pesos del modelo, primero necesitas definir la arquitectura del modelo y luego cargar los pesos.
# Definimos la arquitectura del modelo model = tf.keras.Sequential([ tf.keras.layers.Dense(10, activation='relu', input_shape=(784,)), tf.keras.layers.Dense(10, activation='softmax') ]) # Cargamos los pesos del modelo model.load_weights('my_model_weights.h5')
Ejemplo Práctico
Vamos a ver un ejemplo completo de cómo guardar y cargar un modelo en TensorFlow.
import tensorflow as tf import numpy as np # Definimos un modelo simple model = tf.keras.Sequential([ tf.keras.layers.Dense(10, activation='relu', input_shape=(784,)), tf.keras.layers.Dense(10, activation='softmax') ]) # Compilamos el modelo model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # Generamos datos de ejemplo x_train = np.random.random((1000, 784)) y_train = np.random.randint(10, size=(1000,)) # Entrenamos el modelo model.fit(x_train, y_train, epochs=5) # Guardamos el modelo completo model.save('my_model.h5') # Cargamos el modelo completo loaded_model = tf.keras.models.load_model('my_model.h5') # Evaluamos el modelo cargado loss, accuracy = loaded_model.evaluate(x_train, y_train) print(f'Loss: {loss}, Accuracy: {accuracy}')
Ejercicios Prácticos
Ejercicio 1: Guardar y Cargar un Modelo
- Define un modelo simple de red neuronal.
- Entrena el modelo con datos de ejemplo.
- Guarda el modelo completo en un archivo.
- Carga el modelo desde el archivo.
- Evalúa el modelo cargado con los mismos datos de ejemplo.
Solución
import tensorflow as tf import numpy as np # Paso 1: Definir el modelo model = tf.keras.Sequential([ tf.keras.layers.Dense(10, activation='relu', input_shape=(784,)), tf.keras.layers.Dense(10, activation='softmax') ]) # Paso 2: Compilar y entrenar el modelo model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) x_train = np.random.random((1000, 784)) y_train = np.random.randint(10, size=(1000,)) model.fit(x_train, y_train, epochs=5) # Paso 3: Guardar el modelo completo model.save('exercise_model.h5') # Paso 4: Cargar el modelo desde el archivo loaded_model = tf.keras.models.load_model('exercise_model.h5') # Paso 5: Evaluar el modelo cargado loss, accuracy = loaded_model.evaluate(x_train, y_train) print(f'Loss: {loss}, Accuracy: {accuracy}')
Conclusión
En esta sección, hemos aprendido cómo guardar y cargar modelos en TensorFlow. Esta habilidad es esencial para reutilizar modelos entrenados, compartirlos y desplegarlos en producción. Hemos cubierto tanto el guardado y carga del modelo completo como solo de los pesos del modelo. Además, hemos visto un ejemplo práctico y un ejercicio para reforzar los conceptos aprendidos.
En el próximo tema, exploraremos cómo utilizar TensorFlow Serving para desplegar modelos en producción.
Curso de TensorFlow
Módulo 1: Introducción a TensorFlow
- ¿Qué es TensorFlow?
- Configuración de TensorFlow
- Conceptos Básicos de TensorFlow
- Hola Mundo en TensorFlow
Módulo 2: Fundamentos de TensorFlow
Módulo 3: Manejo de Datos en TensorFlow
Módulo 4: Construcción de Redes Neuronales
- Introducción a Redes Neuronales
- Creando una Red Neuronal Simple
- Funciones de Activación
- Funciones de Pérdida y Optimizadores
Módulo 5: Redes Neuronales Convolucionales (CNNs)
Módulo 6: Redes Neuronales Recurrentes (RNNs)
- Introducción a RNNs
- Construyendo una RNN
- Memoria a Largo Plazo (LSTM)
- Unidades Recurrentes Gated (GRUs)
Módulo 7: Técnicas Avanzadas de TensorFlow
- Capas y Modelos Personalizados
- TensorFlow Hub
- Aprendizaje por Transferencia
- Ajuste de Hiperparámetros