Módulo pytorch fundamentalsParte 2 de 2
Manipulación de Tensores
Reshape, Indexing y Slicing avanzado
🛠️ Manipulación de Tensores
En la práctica, el 80% del tiempo estarás ajustando dimensiones de tensores para que las capas encajen entre sí.
1. Reshape y View
Cambiar la forma de un tensor sin mover los datos subyacentes en memoria.
reshape_view.py
1import torch
2
3t = torch.arange(1, 13) # [1, 2, ..., 12]
4reshaped = t.reshape(3, 4)
5viewed = t.view(2, 6)
6
7# Usar -1 para inferencia automática
8auto = t.reshape(2, -1) # Calcula automáticamente el 6
9print(auto.shape)2. Indexing y Slicing
Acceder a porciones específicas de tus datos.
indexing.py
1t = torch.randn(4, 6)
2
3# Primeras 2 filas, todas las columnas
4sub = t[:2, :]
5
6# Última columna de todas las filas
7last_col = t[:, -1]
8
9# Boolean indexing (Máscaras)
10positive_only = t[t > 0]3. Squeeze y Unsqueeze
Eliminar o añadir dimensiones de tamaño 1. Vital para que las operaciones de batch funcionen.
squeeze.py
1x = torch.randn(3, 4) # (3, 4)
2
3# Añadir dimensión para batch
4x_batch = x.unsqueeze(0) # (1, 3, 4)
5
6# Eliminar dimensiones unitarias
7x_flat = x_batch.squeeze() # (3, 4)