Almacenamiento y Carga de Modelos en TensorFlow JS

Clase 10 de 21Curso de TensorFlow.js

Contenido del curso

Resumen

Entrenar un modelo de aprendizaje de máquina puede tomar horas, días o incluso semanas dependiendo de la complejidad de la red neuronal. Perder ese progreso por no respaldarlo sería un error costoso. Por eso, almacenar y recuperar modelos entrenados es una habilidad fundamental para cualquier desarrollador que trabaje con TensorFlow JS.

¿Por qué es necesario almacenar un modelo entrenado?

Cada vez que entrenas una red neuronal, ajustas múltiples parámetros y experimentas con diferentes configuraciones. Respaldar el avance de cada entrenamiento te permite comparar resultados, retomar donde te quedaste y evitar repetir procesos largos y costosos [0:18].

Pero el almacenamiento no solo sirve para guardar progreso. También te permite reutilizar tu modelo en otros dispositivos: un celular, un navegador web, una tablet, un servidor o cualquier plataforma compatible con TensorFlow JS [0:43]. Incluso existen versiones especializadas como TensorFlow Lite que requieren traducir el modelo final a ese formato específico [1:04].

¿Qué formato utilizan los modelos almacenados?

Cuando guardas un modelo, se generan dos archivos distintos [1:19]:

  • JSON: contiene la topología del modelo, es decir, cómo están organizadas y conectadas las diferentes capas. Es legible por humanos.
  • Binario (.bin): almacena los pesos que se ajustaron durante el entrenamiento. Se usa formato binario porque los modelos avanzados pueden tener miles o millones de valores numéricos, y esta es la forma más eficiente de transportarlos.

La topología describe la arquitectura completa de tu red: cuántas capas tiene, qué tipo de capas son y cómo se relacionan entre sí. Los pesos, por otro lado, representan el conocimiento que el modelo adquirió durante el entrenamiento.

¿Cómo guardar y cargar modelos con la API de Layers?

Guardar un modelo es sorprendentemente simple. Basta con usar model.save() seguido del esquema de URL donde quieres almacenarlo [1:52]. Se hace en una sola línea de código.

¿Qué esquemas de almacenamiento están disponibles?

TensorFlow JS ofrece cinco opciones para guardar modelos [2:10]:

  • localstorage://: almacenamiento nativo del navegador, asociado a la sesión del usuario en esa página web.
  • indexeddb://: una forma de almacenamiento más avanzada que soporta modelos más grandes, aunque también está limitada al navegador.
  • downloads://: el navegador te pedirá guardar los dos archivos (JSON y binario) en tu carpeta de descargas.
  • http:// o https://: envía una petición POST a un servidor que tú configures para almacenar el modelo remotamente.
  • file://: disponible únicamente en Node.js, guarda el modelo directamente en el sistema de archivos del servidor.

La diferencia entre downloads y file es importante: con downloads, el navegador controla el directorio de destino, mientras que con file tienes acceso directo al sistema de archivos desde un entorno Node.js [2:58].

¿Cómo se recupera un modelo almacenado?

Para cargar un modelo previamente guardado, utilizas tf.loadLayersModel() especificando el mismo esquema de URL que usaste al guardarlo [3:43]. Por ejemplo, si lo almacenaste en local storage con un nombre específico, usas ese mismo identificador para recuperarlo.

Esto te permite cargar diferentes modelos para distintas circunstancias, facilitando la experimentación y la comparación de resultados entre entrenamientos.

¿Es posible cargar modelos de otras plataformas?

Sí, es posible cargar modelos generados con Keras o con TensorFlow en Python, aunque en algunos casos se requiere un proceso de traducción previo [3:22]. TensorFlow JS cuenta con repositorios de modelos preentrenados listos para usar, y vale la pena explorarlos para comprender el ecosistema completo.

Si quieres profundizar, investiga qué pasos son necesarios para convertir un modelo de Keras o TensorFlow genérico al formato compatible con TensorFlow JS. Comparte tu hallazgo en los comentarios para validar que el proceso quedó claro.