Fundamentos de PyTorch

1

Clasificación de Texto con PyTorch y TorchText en Google Colab

2

Introducción a PyTorch: Ventajas y Comparación con Otros Frameworks

3

Creación de Modelos de Texto con PyTorch: Clase TextClassifier

4

Creación y manipulación de tensores en PyTorch

5

Depuración y operación con tensores en PyTorch

6

Interacción entre Arrays de NumPy y Tensores de PyTorch

Quiz: Fundamentos de PyTorch

Estructura de modelo de deep learning en PyTorch

7

Regresión Lineal con PyTorch: Creación y Partición de Datos Artificiales

8

Modelo de Regresión Lineal en PyTorch: Creación y Predicción

9

Entrenamiento de Modelos de Regresión Lineal con PyTorch

10

Entrenamiento y Visualización de Modelos de Regresión Lineal en PyTorch

11

Inferencia de Modelos en CPU con PyTorch

Quiz: Estructura de modelo de deep learning en PyTorch

Redes neuronales con PyTorch

12

Clasificación de Texto con PyTorch y TorchText en Google Colab

13

Tokenización y Vocabulario en TorchText para DBpedia

14

Creación y uso de Data Loaders en PyTorch

15

Modelo de Clasificación de Texto con PyTorch

16

Entrenamiento de Modelos de Clasificación con DBpedia Dataset

17

Evaluación de Modelos de Aprendizaje Automático en PyTorch

18

Optimización y partición de datasets con PyTorch

19

Entrenamiento y Evaluación de Modelos en PyTorch

20

Inferencia con Modelos PyTorch y Torch Compile en Colab

21

Guardado y carga de modelos en PyTorch con checkpoints

22

Subida y descarga de modelos en JobinFace Hub

23

Cargar y Usar Checkpoints en PyTorch para Modelos de Clasificación de Texto

Quiz: Redes neuronales con PyTorch

Cierre del curso

24

Aplicación de PyTorch en Proyectos de IA

No tienes acceso a esta clase

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

Inferencia de Modelos en CPU con PyTorch

11/24
Recursos

¿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.

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)