Módulo pytorch fundamentalsParte 1 de 2

Tensores y Operaciones

La estructura de datos fundamental de PyTorch

🔥 Tensores y Operaciones

PyTorch es la herramienta predilecta de quienes construyen IA en serio. Dominar los tensores y sus operaciones no es solo aprender una librería, es aprender a hablar el lenguaje del hardware de alto rendimiento.

¿Qué es un Tensor?

Un tensor es una generalización de vectores y matrices a dimensiones infinitas. Es la estructura de datos optimizada para cálculos masivos en paralelo.

1. Creación de Tensores

Existen múltiples formas de inicializar datos en PyTorch. La elección depende de si quieres datos aleatorios, constantes o cargados desde otras fuentes.

Aleatorios (Randn)

Toma valores de una distribución normal (media 0, std 1). Ideal para inicializar pesos.

torch.randn(3, 3)

Secuenciales (Arange)

Crea un rango de números similar al range nativo de Python.

torch.arange(0, 10, 1)
creacion_basica.py
1import torch
2
3# Desde lista
4tensor = torch.tensor([1, 2, 3])
5
6# Aleatorios (3x3)
7random_tensor = torch.rand(3, 3)
8
9# Unos y Ceros
10ones = torch.ones(2, 2)
11zeros = torch.zeros(5, 5)

2. Multiplicación Matricial

Esta es la operación que consume el 99% de la potencia de una GPU durante el entrenamiento. En PyTorch usamos el operador @ o torch.matmul().
Para realizar la multiplicación matricial, recuerda la regla de oro: las dimensiones internas deben coincidir.
(m × n) @ (n × p) = (m × p)
operaciones_matmul.py
1A = torch.randn(3, 2)
2B = torch.randn(2, 4)
3
4# Multiplicación
5C = A @ B  # Shape: (3, 4)
6
7# Error común: dimensiones incompatibles
8# C = B @ A  # RuntimeError!

3. Gestión de Dispositivos (GPU)

La gran ventaja de PyTorch es mover cálculos a la GPU con una sola línea.
device_agnostic.py
1# Código agnóstico al dispositivo
2device = "cuda" if torch.cuda.is_available() else "cpu"
3print(f"Entrenando en: {device}")
4
5# Mover un tensor
6x = torch.randn(3, 3).to(device)