Guardado y carga de modelos Keras para predicciones en producción

Clase 15 de 17Curso de Deep Learning con TensorFlow y Keras

Resumen

¿Cómo guardar y cargar un modelo en un proyecto de Machine Learning?

Imagina que estás a solo un paso de convertir un modelo de Machine Learning en un producto tangible y funcional. El paso crucial es guardar y cargar adecuadamente este modelo para que pueda hacer predicciones en el mundo real. En esta guía, descubrirás cómo superar esta última etapa utilizando herramientas modernas y seguirás los avances en la documentación más reciente.

¿Cómo se guarda el modelo entrenado?

Al guardar un modelo entrenado, es vital asegurar que tengas todo bien configurado para facilitar su reutilización. Vamos a guardar el modelo entrenado con una metodología avanzada, usando la búsqueda aleatoria como parte del ajuste del modelo.

  1. Guardar el 'best model': Identifica y almacena el mejor modelo que hayas entrenado. Asegúrate de que este sea el más óptimo para tus necesidades específicas.
  2. Nombre apropiado: Asigna un nombre claro como mi_modelo_entrenado.
  3. Extensión adecuada: Aunque anteriormente se utilizaba .h5 o .hdf5, la documentación moderna recomienda usar la extensión .keras.

Por ejemplo, usarías este bloque de código para lograrlo:

best_model.save('mi_modelo_entrenado.keras')

Este paso asegura que tu modelo puede ser fácilmente recuperado y utilizado para predicciones futuras, en producción.

¿Cómo cargar el modelo y los preprocessadores?

Una vez guardado el modelo, el siguiente paso es cargarlo para realizar predicciones. Es importante no olvidar los preprocessadores usados durante el entrenamiento para replicar las condiciones.

  1. Importar librerías: Importa todas las librerías necesarias para cargar el modelo y preprocessadores.
  2. Carga del modelo y preprocessadores:
    • Modelo: Usa keras.models.load_model y apaga la opción compile para desactivar la compilación.
    • Encoder: Recupera con nombre como label_encoder.pkl.
    • Escalador: Recupéralo desde scaler.pkl.

Un ejemplo de cómo conseguir esto puede ser:

from keras.models import load_model

modelo = load_model('mi_modelo_entrenado.keras', compile=False)

Además, recuerda manipular los datos de entrada de la misma manera que durante el entrenamiento para garantizar la precisión.

¿Cómo asegurar predicciones confiables?

El objetivo final es realizar predicciones exitosas con datos que el modelo no ha visto antes. Considera los siguientes pasos para asegurar esto:

  1. Preprocesamiento: Aplica las mismas transformaciones que durante el entrenamiento—como eliminación de columnas irrelevantes, escalado y codificación de los datos.

    Ejemplo de preprocesamiento:

    def preprocesar_datos(nuevos_datos):
        # elimina columnas no requeridas y aplica transformaciones
        datos_procesados = ...
        return datos_procesados
    
  2. Realizar predicciones: Usa el método predict para obtener probabilidades y decide la salida de acuerdo a un umbral predefinido.

  3. Manejo de bordes y errores: Presta atención a las predicciones cercanas al umbral del 50%, donde el modelo puede cometer errores. Considéralo a la hora de implementar tu solución en producción.

    Ejemplo de manejo de predicciones:

    resultados = modelo.predict(datos_procesados)
    resultado_final = [1 if prob > 0.5 else 0 for prob in resultados]
    

La precisión y confiabilidad de tus predicciones dependen de un buen manejo de los datos y un conocimiento profundo del comportamiento de tu modelo. Considera complementar estas metodologías con un análisis constante de la matriz de confusión y otros indicadores de rendimiento para adaptarte a posibles cambios en los datos de entrada. ¡Ahora estás listo para llevar tu modelo al siguiente nivel y experimentar con su implementación en un ambiente real!