Modelo de Regresión Lineal en PyTorch: Creación y Predicción
Clase 8 de 24 • Curso de Redes Neuronales con PyTorch
Resumen
¿Cómo creamos un modelo de regresión lineal en PyTorch?
¡Bienvenido! Hoy nos adentraremos en el fascinante mundo de la regresión lineal utilizando PyTorch. Este enfoque es similar al que exploramos en la clase "Hola Mundo", pero con nuevas piezas y conexiones que nos permitirán lograr nuestras metas de manera más efectiva. Para ello, necesitaremos familiarizarnos con algunas librerías clave: torch.nn
, torch.optim
, Dataset
y DataLoader
. Aunque en este momento solo utilizaremos las dos primeras, entender su papel es crucial para el desarrollo en PyTorch.
¿Qué son y cómo inicializamos los parámetros del modelo?
El modelo que crearemos se basará en dos parámetros esenciales: volumen y sesgo. Estos parámetros se entrenan y mejoran durante el proceso de optimización. Para ello, iniciamos con valores aleatorios, con la finalidad de ajustar los pesos hasta alcanzar la regresión lineal deseada.
import torch
from torch import nn
class ModeloRegresion(nn.Module):
def __init__(self):
super().__init__()
self.volumen = nn.Parameter(torch.rand(1, dtype=torch.float, requires_grad=True))
self.sesgo = nn.Parameter(torch.rand(1, dtype=torch.float, requires_grad=True))
Los parámetros se definen utilizando nn.Parameter
, permitiendo que sean entrenables y ajustables durante el entrenamiento. Comenzar con valores aleatorios ofrece flexibilidad en la optimización, algo fundamental en modelos de machine learning.
¿Cómo se realiza la función forward?
La función forward
es indispensable, ya que especifica el flujo de datos a través de nuestro modelo, permitiendo que realice predicciones. Se utiliza para aplicar operaciones a los datos de entrada, y en este caso, calculamos la regresión lineal.
def forward(self, x: torch.Tensor) -> torch.Tensor:
return self.volumen * x + self.sesgo
Aquí, multiplicamos el volumen por el dato de entrada x
y sumamos el sesgo. Este paso es clave para definir el comportamiento del modelo.
¿Cómo inicializamos el modelo y preparamos para la predicción?
Antes de inicializar nuestro modelo, configuramos una semilla aleatoria con torch.manual_seed
para garantizar la reproducibilidad. Este paso es vital, especialmente cuando trabajamos con valores aleatorios.
torch.manual_seed(42)
modelo1 = ModeloRegresion()
Después, utilizamos la función state_dict
para inspeccionar el estado actual del modelo con sus parámetros iniciales. Esto nos permite seguir el progreso del modelo a lo largo del entrenamiento.
¿Cómo hacemos predicciones con el modelo no entrenado?
Mientras que el modelo no está entrenado, podemos comenzar a obtener predicciones. Usamos el inferenceMode
de Torch para desactivar el gradiente durante la predicción, ya que solo se necesita durante el entrenamiento.
with torch.inference_mode():
y_pred = modelo1(torch.tensor([x_values], dtype=torch.float))
Estas predicciones iniciales, basadas en ajustes aleatorios, son inexactas, pero nos proporcionan un punto de partida para medir el progreso del modelo durante el entrenamiento.
¡Anímate a seguir profundizando! Aunque pueda parecer desafiante, entender estos conceptos te abrirá puertas en el mundo de la programación en inteligencia artificial. Cada paso que des te acercará más a la maestría en machine learning con PyTorch.