Antes de escribir código, entendamos qué problema resuelve PyTorch y por qué es la herramienta dominante para construir redes neuronales — desde la investigación hasta producción.
PyTorch es una librería de Python para hacer cálculo numérico con tensores, calcular gradientes automáticamente y construir redes neuronales. Si ya hiciste el curso de redes a mano, PyTorch es lo que automatiza todo eso para que escales a millones de parámetros.
La estructura de datos central: arrays N-dimensionales (como los de NumPy) pero que pueden vivir en la GPU. Todo en PyTorch son tensores.
Calcula gradientes automáticamente. Escribes solo el forward; PyTorch deriva el backward por ti (el backprop de tu curso, gratis).
Mueve los cálculos a la tarjeta gráfica con una línea. Las operaciones matriciales se vuelven decenas de veces más rápidas.
Encima de eso, el módulo torch.nn ofrece capas, funciones de pérdida y optimizadores
listos para usar. Lo veremos a partir de la lección 5.
PyTorch ya está instalado en el entorno de este proyecto. Lo confirmamos con:
import torch
print(torch.__version__)
El +cpu indica que es la versión para CPU (sin GPU NVIDIA). Es perfecta para aprender;
todo lo del curso funciona igual, solo que el entrenamiento de modelos grandes sería más lento.
Un tensor se crea con torch.tensor(...). Creemos una matriz 2×2 y miremos sus propiedades:
t = torch.tensor([[1.0, 2.0],
[3.0, 4.0]])
print(t)
print(t.shape, t.dtype)
shape = [2, 2] → 2 filas × 2 columnas. La forma es lo primero que mirarás siempre.dtype = float32 → el tipo de número. Las redes usan floats por defecto.Las operaciones son naturales. Sumar 1 a cada elemento:
print(t + 1)
Si conoces NumPy, te sentirás en casa: misma idea de arrays y operaciones. De hecho, puedes convertir de uno a otro sin copiar datos:
import numpy as np
a = np.array([10., 20., 30.])
t = torch.from_numpy(a) # numpy → torch
print(t)
| NumPy | PyTorch | |
|---|---|---|
| Arrays N-dim | ✅ | ✅ |
| Corre en GPU | ❌ | ✅ |
| Gradientes automáticos | ❌ | ✅ (autograd) |
| Capas de red listas | ❌ | ✅ (torch.nn) |
Esto es lo que distingue a PyTorch de NumPy. Marca un tensor con requires_grad=True y
PyTorch recordará todas las operaciones para poder derivar. Calculemos
y = x² en x = 3 y pidamos su derivada:
x = torch.tensor(3.0, requires_grad=True)
y = x**2
y.backward() # autograd calcula dy/dx
print(x.grad) # el gradiente queda guardado aquí
1) El valor de y: y = x² = 3² = 9 ✓ coincide con la salida 2) La derivada: d(x²)/dx = 2·x (regla de la potencia) 3) Evaluada en x=3: 2·x = 2·3 = 6 ✓ coincide con x.grad
x² es 2x, que en x=3 vale 6.
PyTorch lo calculó solo, sin que escribiéramos ninguna fórmula de derivada. Multiplica
esto por millones de parámetros y tienes el entrenamiento de una red neuronal. Le dedicamos la
lección 4 entera.
torch.nn). En la próxima lección nos metemos de lleno con los
tensores: cómo crearlos, sus tipos, formas y cómo indexarlos — la base de todo lo demás.