No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Predicción con un modelo de PyTorch entrenado

11/24
Recursos

Aportes 6

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Realicé la prueba aumentando las épocas, y la mejor fue 300, de ahí en adelante no se vio mejoría en las predicciones

Increíble!

como el reto suponía ajustar el modelo, lo que hice fue agrandar los steps y he aquí mi resultado:

Si reducimos el lr a 0.002, y aumentamos las épocas a 1330, se aprecia una mejora razonable del aprendizaje, pero también cómo es necesario aumentar las épocas al reducir el lr en este ejemplo sencillo.

Con 160 épocas obtuve este resultado![](https://static.platzi.com/media/user_upload/captura_-025ffdd9-5946-49f8-93dd-a5405b78806a.jpg)
Una vez que has entrenado un modelo en PyTorch, puedes utilizarlo para realizar predicciones sobre nuevos datos o sobre datos de prueba. Para ello, es fundamental cambiar el modelo a modo de evaluación utilizando `model.eval()` y asegurarte de que no se están calculando los gradientes con `torch.no\_grad()`, ya que durante la predicción no es necesario el retropropagación. Aquí te muestro cómo hacer predicciones con un modelo de PyTorch ya entrenado: \### Ejemplo de código para hacer predicciones ```python import torch \# Pon el modelo en modo de evaluación model\_1.eval() \# Datos de entrada para la predicción (puede ser cualquier tensor nuevo o de prueba) \# Asegúrate de que X\_nuevos\_datos tiene la misma estructura que los datos de entrenamiento X\_nuevos\_datos = torch.tensor(\[\[0.5, 0.8], \[0.3, 0.9]]) # Ejemplo de nuevos datos (cambia según tu caso) \# Realizar la predicción sin calcular gradientes with torch.no\_grad(): \# Pase hacia adelante para hacer predicciones predicciones = model\_1(X\_nuevos\_datos) \# Si las predicciones son logits (para clasificación), puedes convertirlas a probabilidades \# Por ejemplo, si la última capa de tu modelo no tiene una función softmax, puedes aplicar una: probs = torch.softmax(predicciones, dim=1) \# O si usas una regresión, puedes imprimir directamente los valores predichos print("Predicciones:") print(predicciones) \# Si es un problema de clasificación, puedes obtener la clase predicha clases\_predichas = torch.argmax(probs, dim=1) print("Clases predichas:", clases\_predichas) ``` \### Explicación del código: 1\. \*\*`model.eval()`\*\*: Cambiamos el modelo al modo de evaluación. Esto asegura que ciertas capas como `Dropout` o `BatchNorm` se comporten de manera adecuada durante la predicción. 2\. \*\*Datos de entrada\*\*: Usamos `X\_nuevos\_datos`, que debe tener el mismo formato y dimensiones que los datos de entrenamiento. Si usas normalización o preprocesamiento durante el entrenamiento, asegúrate de aplicarlo también a los datos de predicción. 3\. \*\*`torch.no\_grad()`\*\*: Esto desactiva el cálculo de gradientes, lo que hace que la predicción sea más rápida y eficiente en términos de memoria. 4\. \*\*Predicción\*\*: Usamos el modelo para hacer una predicción (`model\_1(X\_nuevos\_datos)`). Si es un modelo de clasificación, los resultados pueden estar en forma de \*\*logits\*\*, por lo que podemos aplicar `torch.softmax()` para convertirlos en probabilidades. 5\. \*\*Clases predichas\*\* (si es clasificación): Si el modelo es de clasificación, `torch.argmax()` puede ayudarte a obtener la clase predicha para cada muestra. \### Consideraciones adicionales: \- \*\*Clasificación\*\*: En un problema de clasificación, el modelo típicamente devuelve logits (valores sin procesar antes de la función de activación final), y se pueden convertir a probabilidades con `softmax`. Luego, las clases predichas se obtienen usando `torch.argmax()`. \- \*\*Regresión\*\*: En problemas de regresión, la salida será el valor predicho directamente, por lo que no necesitas aplicar `softmax`. \- \*\*Preprocesamiento\*\*: Asegúrate de aplicar el mismo preprocesamiento a los datos de entrada de predicción que aplicaste durante el entrenamiento (como la normalización de características).
Añadí un poco de sesgo a los datos y aumenté el número de steps ![](https://static.platzi.com/media/user_upload/image-5d65b07c-3b2c-41c0-b7ae-60b6ef89a4fb.jpg)