Inferencia de Modelos en CPU con PyTorch

Clase 11 de 24Curso de Redes Neuronales con PyTorch

Resumen

¿Cómo realizar inferencia con un modelo de machine learning?

Realizar inferencia es el proceso esencial para evaluar cómo nuestro modelo de machine learning, una vez entrenado, puede manejar datos no vistos o nuevos. En esta fase, aprovechamos el modelo para generar predicciones y compararlas con datos reales. Aprender a implementar este proceso garantiza que el modelo generalice correctamente fuera del conjunto de datos de entrenamiento.

¿Cuáles son los pasos para usar nuestro modelo en modo evaluación?

Implementar un modelo entrenado para inferencia implica una serie de pasos que aseguran que las predicciones sean precisas y que el modelo esté adecuadamente preparado.

  1. Activar el modo "EVAL": Antes de hacer predicciones, colocamos nuestro modelo en modo "EVAL" (evaluación). Esto es crucial ya que desactiva funciones como el dropout, que no son necesarias al evaluar el modelo, asegurando que las predicciones sean consistentes y realistas.

  2. Configurar el administrador de contexto del modo "Inferencia": Si ya estás familiarizado con ambientes como PyTorch, sabrás que es esencial usar un administrador de contexto para asumir el modo sin gradientes, optimizando así el uso de memoria y acelerando las predicciones.

  3. Asegurar consistencia en el dispositivo: Todo, desde el modelo hasta los datos de prueba, debe residir en el mismo dispositivo, ya sea CPU o GPU. Aunque en este ejemplo operamos con CPU, es bueno utilizar funciones como to(device), especialmente si trabajamos en entornos con GPU, para maximizar el rendimiento.

# Mover el modelo y el tensor de prueba al dispositivo
# modelo.to(device)
# x_prop.to(device)

¿Cómo obtenemos las predicciones y evaluamos el rendimiento del modelo?

Una vez que el modelo está en modo evaluación y todos los elementos están en el dispositivo correcto, podemos proceder a obtener las predicciones.

  • Generar predicciones: Ejecutamos el modelo usando los datos de prueba para obtener un tensor con nuestras nuevas predicciones.
  • Visualizar resultados: Usamos funciones gráficas predefinidas, como PlotPredictions, para observar visualmente cómo las predicciones se comparan contra los valores reales.
# Obtener predicciones
y_preds = modelo(x_prop)

# Graficar predicciones
PlotPredictions(predictions=y_preds)

Al visualizarlo gráficamente, podemos identificar mejoras en la cercanía de las predicciones a los datos objetivos.

¿Cómo optimizar un modelo de machine learning entrenado?

Después de observar las predicciones, aún es posible mejorar el rendimiento del modelo. Aquí algunas recomendaciones para optimización efectiva:

  • Aumentar el número de épocas: Más épocas pueden llevar a un mejor ajuste, aunque cuidado con el sobreajuste.
  • Ajustar el Learning Rate: Modificar este parámetro impacta en la velocidad de aprendizaje y puede mejorar la convergencia.
  • Probar diferentes optimizadores y funciones de pérdida: Variar estos componentes puede resultar en un mejor desempeño del modelo.

Estas acciones ayudarán a refinar el modelo y verán cómo los resultados se acercan más a los valores reales, diferenciándose cada vez menos.

Interacción y reflexión

¡Enhorabuena! Llegaste al final de este módulo, en el que no solo aprendiste cómo inicializar, entrenar y evaluar un modelo, sino también a reflejar el progreso visualmente. Te animamos a reflexionar sobre cómo estas técnicas profundizaron tus conocimientos en Deep Learning comparados con tecnologías previas que manejabas, como Keras. ¡Esperamos tus comentarios!

En el próximo módulo, decidiremos entrenar una red neuronal con PyTorch. Te invitamos a seguir explorando y profundizando en el conocimiento sobre estas fascinantes técnicas.