Hacer inferencia con un modelo entrenado en PyTorch significa usarlo para generar predicciones sobre datos nuevos y compararlas con los valores reales. Si vienes de Keras y quieres entender cómo se traduce ese flujo en PyTorch, aquí tienes los tres pasos clave para evaluar un modelo de regresión lineal y visualizar qué tan cerca quedan tus predicciones del objetivo.
¿Qué pasos sigo para hacer inferencia en PyTorch?
Antes de pedirle predicciones a tu modelo, necesitas prepararlo. Hay tres movimientos que no puedes saltarte.
- Pasar el modelo a modo evaluación con
model.eval(). Esto desactiva comportamientos propios del entrenamiento.
- Envolver la predicción en el administrador de contexto
inference_mode(), que ya hemos usado en clases anteriores.
- Asegurarte de que el modelo y los tensores estén en el mismo device, sea CPU o GPU.
¿Qué es el modo eval en PyTorch? Es el estado en el que pones tu modelo cuando ya no vas a entrenarlo, solo a usarlo para predecir. Se activa con model.eval() y le indica a PyTorch que apague mecanismos de entrenamiento.
¿Por qué el device importa aunque uses solo CPU?
En este ejercicio todo corre en CPU y ni siquiera inicializamos una GPU. Aun así, es buena práctica mover explícitamente tu modelo y tus datos al device correcto cuando trabajas con GPU, por ejemplo en Colab.
El patrón se ve así: usas la función to para mandar el modelo a un device (puede ser cuda o cpu) y haces lo mismo con tu tensor de prueba. Si X_prueba y el modelo viven en lugares distintos, PyTorch te lanza un error. Por eso ambos tienen que coincidir.
Como aquí no era necesario, esa línea queda comentada. Pero tenla siempre presente cuando subas tu código a una GPU.
¿Cómo genero las predicciones con el modelo entrenado?
Una vez que tu modelo está en modo eval y dentro del inference mode, llamas al modelo y le pasas los valores de prueba que definiste antes. El resultado es un tensor con las nuevas predicciones, ya con los pesos ajustados después de 100 épocas de entrenamiento.
Ese tensor lo guardas en una variable, por ejemplo y_preds, y lo llevas a la función plot_predictions que creaste al inicio del Colab. En el argumento predictions colocas y_preds y obtienes la gráfica comparativa.
¿Qué muestra la gráfica de predicciones? Los puntos rojos representan lo que predijo tu modelo y los amarillos los valores reales. Mientras más cerca estén los rojos de los amarillos, mejor aprendió tu red.
¿Cómo sé si mi modelo mejoró?
Al comparar la nueva gráfica con la del inicio, los puntos rojos quedan mucho más pegados a los amarillos. Ese es el objetivo: que las predicciones sean prácticamente iguales a los valores reales. Es una mejora notable frente a la dispersión inicial, antes del entrenamiento.
Desde aquí viene el reto. Modifica las piezas y observa cómo se mueven los puntos rojos en la gráfica.
- Aumenta el número de épocas más allá de 100.
- Ajusta el learning rate hacia arriba o hacia abajo.
- Cambia el optimizador por otro disponible en torch.optim.
- Prueba con una función de pérdida distinta.
Cada cambio te dará una intuición sobre qué tanto se acercan o se alejan tus predicciones de los valores reales.
¿Qué construiste en este módulo de PyTorch?
Levantaste un modelo de regresión lineal de principio a fin: lo inicializaste, lo entrenaste y lo evaluaste con datos de prueba. También graficaste el avance para ver con tus propios ojos cómo el modelo se acercaba al objetivo época tras época.
Si ya conocías Keras, este flujo en PyTorch te da control más fino sobre cada paso: el bucle de entrenamiento, el manejo del device y los modos de evaluación. ¿Cómo sientes que avanzaron tus conocimientos en deep learning comparado con las herramientas que ya usabas? Déjalo en los comentarios de la clase y nos vemos en el siguiente módulo, donde entrenaremos una red neuronal con PyTorch.