🧮 Computational Mathematics

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

138 — Broadcasting como operación tensorial

intermedio-avanzado clase 18 de 20 4 horas demostración broadcasting

Broadcasting alinea shapes por la derecha y estira las dimensiones de tamaño 1 sin copiar memoria.

Fórmulas

las dimensiones se alinean por la derecha
compatibles si son iguales o alguna vale 1
(2,3) + (3,) → (2,3);  (2,3) + (2,1) → (2,3)

Desarrollo

Broadcasting es la regla que permite operar arrays de shapes distintos sin escribir bucles ni replicar datos. Las dimensiones se alinean por la derecha y se consideran compatibles si coinciden o si una de ellas vale 1; en ese caso, la de tamaño 1 se «estira» conceptualmente.

La clave es que el estiramiento no copia memoria: la implementación recorre el array pequeño repetidamente con stride cero. Por eso sumar un vector de sesgos a una matriz de activaciones es prácticamente gratis, y por eso normalizar por columna no requiere construir una matriz de medias.

Las reglas son estrictas y su violación produce uno de dos resultados. El bueno: un error de shape que detiene el programa. El malo: una operación que «funciona» pero no es la pretendida, típicamente por confundir (n,) con (n,1). Un vector (3,) sumado a una matriz (3,3) se suma por filas; si se quería por columnas, hay que escribir (3,1) explícitamente.

Ese matiz es la fuente de un error clásico al calcular distancias o normalizaciones. La defensa es anotar los shapes y usar None/np.newaxis de forma explícita en lugar de confiar en que la regla haga lo esperado.

Ejemplo trabajado

Sumar una fila y una columna a la misma matriz.

matriz  shape (2,3):  [[1,2,3],[4,5,6]]

+ fila  shape (3,):   [10,20,30]
  alinea por la derecha: (2,3) y (3,) → (2,3)
  resultado: [[11,22,33],[14,25,36]]      suma por filas

+ columna shape (2,1): [[100],[200]]
  (2,3) y (2,1) → (2,3)
  resultado: [[101,102,103],[204,205,206]]  suma por columnas

Incompatible: (2,3) + (2,) → error

Qué calcula el laboratorio

Broadcasting: reglas de compatibilidad de shapes.

python classes/part-06-algebra-lineal-ii-descomposiciones-y-tensores/138-broadcasting-como-operacion-tensorial/lab.py
compmath run 138

Salidas del laboratorio (8)

Muestra de la ejecución real

{
  "matriz_shape": [
    2,
    3
  ],
  "fila_shape": [
    3
  ],
  "columna_shape": [
    2,
    1
  ],
  "matriz+fila": [
    [
      11.0,
      22.0,
      33.0
    ],
    [
      14.0,
      25.0,
      36.0
    ]
  ],
  "matriz+columna": [
    [
      101.0,
      102.0,
      103.0
    ],
    [
      204.0,
      205.0,
      206.0
    ]
  ],
  "regla": "las dimensiones se alinean por la derecha; 1 se estira"
}

Errores comunes

Dónde se usa

Suma de sesgos, normalización por eje, cálculo de matrices de distancias, aplicación de máscaras y prácticamente cualquier operación vectorizada.

Idea rectora de la parte

PCA es la SVD de los datos centrados: no hay magia estadística adicional.

Error a evitar

Confundir el orden de los índices al reordenar un tensor.

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