🧮 Computational Mathematics

Inicio · Parte 06 — Álgebra lineal II: descomposiciones y tensores

137 — Tensores: índices, shape y orden

intermedio-avanzado clase 17 de 20 4 horas demostración tensors

El orden de un tensor es su número de índices; el shape y el orden de aplanado determinan cómo se recorre.

Fórmulas

orden = número de índices
índice lineal (row-major) = i·(d₂d₃) + j·d₃ + k
lote de imágenes: (N, C, H, W)

Desarrollo

Un tensor generaliza escalar, vector y matriz a un número arbitrario de índices. En computación no es más que un array multidimensional con un shape, y el trabajo real está en no perderse entre los índices.

El orden de aplanado determina cómo se recorre en memoria. En row-major —el de C, Python y NumPy por defecto— el último índice varía más rápido; en column-major —el de Fortran, MATLAB y las rutinas BLAS— es el primero. Recorrer en el orden equivocado destruye la localidad de caché y puede costar un orden de magnitud de rendimiento sin cambiar el resultado.

Las convenciones de shape importan porque no son universales. Un lote de imágenes es (N, C, H, W) en PyTorch y (N, H, W, C) en TensorFlow. Confundirlas produce errores silenciosos: el código corre y el modelo no aprende. Anotar el shape esperado en cada punto del código es la práctica que evita esa clase de bug.

Las operaciones de reordenamiento —transpose, permute, reshape, view— no mueven datos necesariamente: cambian la interpretación de los índices. Esa distinción entre vista y copia es la que explica los errores de contigüidad que aparecen al encadenar operaciones en PyTorch.

Ejemplo trabajado

Tensor de orden 3 y su aplanado.

shape (2,2,2), 8 elementos

T[0] = [[0,1],[2,3]]
T[1] = [[4,5],[6,7]]

aplanado row-major: [0,1,2,3,4,5,6,7]

elemento T[1][0][1] = 5
índice lineal: 1·4 + 0·2 + 1 = 5           ✓

Convenciones reales:
  PyTorch:    (N, C, H, W)
  TensorFlow: (N, H, W, C)

Qué calcula el laboratorio

Orden, shape y reordenamiento de índices.

python classes/part-06-algebra-lineal-ii-descomposiciones-y-tensores/137-tensores-indices-shape-y-orden/lab.py
compmath run 137

Salidas del laboratorio (8)

Muestra de la ejecución real

{
  "orden": 3,
  "shape": [
    2,
    2,
    2
  ],
  "tensor": [
    [
      [
        0,
        1
      ],
      [
        2,
        3
      ]
    ],
    [
      [
        4,
        5
      ],
      [
        6,
        7
      ]
    ]
  ],
  "elementos": 8,
  "aplanado_row_major": [
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7
  ],
  "elemento_[1][0][1]": 5
}

Errores comunes

Dónde se usa

Representación de lotes de imágenes, secuencias y vídeo; interoperabilidad entre frameworks; optimización de recorridos por localidad de caché.

Idea rectora de la parte

La SVD existe para toda matriz, incluso no cuadrada y singular.

Error a evitar

Interpretar autovalores complejos como error de cálculo.

Conexión con IA

LoRA factoriza matrices de bajo rango, la atención se define con productos tensoriales y la estabilidad del entrenamiento depende del espectro de los pesos.

Bibliografía de la clase

Archivos de la clase