Tensores para Machine Learning — de datos reales a modelos modernos. Ravi Kalia y Sebastian Laverde Chunza.

Predicción: los mismos números — ¿sigue sonando a voz?

Reproduce la voz tal como se construyó y luego cambia la disposición y reprodúcela otra vez: los mismos 263.169 números, solo en otro orden.

Abrir el widget de voz ↗

La idea del workshop: cuatro tarjetas muestran escalar, vector, matriz y tensor como arreglos 0D, 1D, 2D y ND, cada uno definido por su forma. La pregunta guía del día: antes de operar, ¿qué representa cada eje?

Cuatro ideas, un solo objeto. Todo el día en cuatro tarjetas. Tarjeta uno: un tensor generaliza la matriz. Un escalar no tiene ejes, un vector uno, una matriz dos, y un tensor tantos como pidan los datos. Tarjeta dos: contiene los datos. Imágenes, fotogramas, viajes en taxi y precios son una sola caja de números, y cada eje representa algo. Tarjeta tres: sus ejes se mueven. transpose los permuta. reshape relee los mismos números planos, así que la misma forma puede tener otro significado. Tarjeta cuatro: se factoriza. Los números en primos, las cuadráticas en raíces, las matrices en LU, QR y SVD, y los tensores también. Y donde no hay inversa, responde la pseudoinversa. Llévate esto todo el día: antes de operar sobre un tensor, nombra sus ejes.

Datos reales, problemas reales. Cuatro conjuntos de datos reales usados en el taller: dígitos manuscritos, histología teñida, vivienda en California y viajes en taxi de NYC. Cada uno lleva el papel que cumple más adelante.

Programa — 210 minutos

Hora de inicio Duración (min) Parte Segmento
00:00 5 — Preparación y bienvenida
00:05 20 I Qué es un tensor
00:25 20 II Pensar en N dimensiones
00:45 30 III Indexación y broadcasting · Reshape y transposición
01:15 10 🎯 Kahoot 1 + pausa
01:25 15 III Diseño de un pipeline de vídeo (grupo)
01:40 15 IV Contracción con einsum
01:55 5 — Pausa
02:00 15 IV Inversas y la pseudoinversa
02:15 5 🎯 Kahoot 2
02:20 25 IV Recursión · Factorizaciones matriciales
02:45 5 — Pausa
02:50 15 IV Descomposición de Tucker
03:05 5 🎯 Kahoot 3
03:10 15 IV Factorizaciones tensoriales
03:25 5 — Cierre y ejercicios para casa

00 · Preparación y bienvenida

—

5 min

Practica hoy

Nombrar ejes posibles y predecir un corte en el diagnóstico inicial.

Explora después

Después del diagnóstico, repasar ejemplos de calidad de datos. Completar la preparación antes de clase.

Colab ↗

01 · Qué es un tensor

I

20 min

Practica hoy

Nombrar los ejes de imágenes y distinguir forma, orden y número de elementos.

Explora después

Extraer cortes y fibras, y desplegar imágenes como matrices.

Colab ↗

📖 De NumPy a JAX ↗

Mapa de las factorizaciones: seis factorizaciones de matrices y tensores en una escalera desde LU hasta Cholesky, QR, SVD, Tucker y CP, cada una con una frase que resume qué aporta.

La sección 09 recorre este mapa sobre datos reales: cada factorización escrita como un problema de optimización con restricciones, el coste de cada una deducido y luego medido, y la SVD como la mejor aproximación de rango k que existe. La pregunta “cuál elijo y cuánto me cuesta” que plantea esta escalera se responde dos horas después, en la sala.

📖 ¿Por qué hay tantas factorizaciones matriciales? ↗

¿Qué aporta una factorización? Un diagrama de cuatro pasos — número, polinomio, matriz, tensor — muestra que factorizar revela estructura útil y no solo reescribe una expresión.

NumPy: un búfer, distintas vistas

Un ndarray combina valores en memoria con metadatos que indican cómo leerlos.

import numpy as np
T = np.arange(24, dtype=np.float32).reshape(2, 3, 4)
T_t = T.transpose(2, 0, 1)
np.shares_memory(T, T_t)  # True
Arreglo Forma Strides · bytes
T (2, 3, 4) (48, 16, 4)
T_t (4, 2, 3) (4, 48, 16)

Mismos datos. Ejes reordenados.
Escribir en la vista también modifica el original.

96 bytes

24 valores × 4 bytes por float32
Ambos arreglos comparten este búfer.

Strides
Pasos en bytes por eje. Transponer reordena esos pasos.
Vectorización
Bucles numéricos compilados reducen el trabajo del intérprete.
Broadcasting
Formas alineadas por la derecha: tamaños iguales o uno es 1. Sin replicar entradas.

Travis Oliphant · 2005
Combinó Numeric y Numarray para crear NumPy.

Numeric 1995  →  Numarray 2001
NumPy 2005  →  NumPy 1.0 2006

Explora NumPy ↗
Base de arreglos de Python científico

Hardware para operaciones tensoriales

La carga de trabajo determina qué arquitectura ayuda.

D = AB + C
Producto matricial con acumulación

Arquitectura Cómo calcula Uso más adecuado Ejemplos de memoria
CPUPropósito general Varios núcleos + SIMD
Control de flujo flexible
Tareas generales
Baja latencia
Cachés + DRAM DDR
GPUNVIDIA SIMT + Tensor Cores
Plataforma CUDA
Contracciones paralelas
Producto con acumulación
GDDR o HBM
TPUGoogle · ASIC especializado Unidades matriciales sistólicas
Operandos entre vecinos (MXU)
Productos matriciales densos
Reutilización de datos
Búferes internos + HBM
Otros ASIC de ML Flujo de datos especializado Cargas específicas SRAM, DRAM o HBM

La memoria y la precisión admitida varían según la generación del dispositivo.

Mover datos cuesta tiempo.Reutiliza datos en el dispositivo. Operaciones pequeñas y transferencias repetidas pueden anular la mejora.

Bibliotecas numéricas y frameworks de ML

Las operaciones tensoriales se apoyan en rutinas numéricas optimizadas.

Dentro de una operación de NumPy

A @ BProducto matricialBLAS
np.linalg.svd(A)Descomposición en valores singularesLAPACK
BLAS · operaciones estándar en tres niveles
1 · Vector 2 · Matriz–vector 3 · Matriz–matriz
Producto punto y = Ax C = AB

LAPACK usa BLAS para sistemas lineales, SVD y problemas de autovalores.

Bibliotecas de aceleración
cuBLAS · BLAS en GPU
cuTENSOR · contracciones tensoriales
oneDNN · primitivas de redes neuronales

Los frameworks añaden más

Diferenciación automática · selección de dispositivo · compilación

PyTorch
Autograd dinámico
torch.compile
JAX
Transformaciones componibles
jit · vmap · grad
TensorFlow
Ejecución inmediata + grafos
tf.function
Keras 3
API de modelos sobre
TensorFlow / JAX / PyTorch
Haiku / Flax
Módulos de redes neuronales en JAX
Nombra los ejes. Comprueba las formas.Estos hábitos sirven en todos los frameworks.

02 · Pensar en N dimensiones

II

20 min

Practica hoy

Mantener imágenes y etiquetas emparejadas al barajar; explicar por qué barajar el tiempo cambia una secuencia.

Explora después

Construir lotes de video con relleno e interpretar otros ejes experimentales.

Colab ↗

Batch no es tiempo. Dieciséis dígitos manuscritos barajados siguen siendo reconocibles, mientras que los fotogramas de vídeo barajados vuelven la secuencia de la tormenta irreconocible. Reordenar un eje de lote es seguro. Reordenar el tiempo no lo es.

Colab ↗

03 · Indexación y broadcasting con datos reales

III

15 min

Practica hoy

Predecir formas de broadcasting y estandarizar columnas de píxeles de forma segura si la varianza es cero.

Explora después

Seleccionar observaciones con nombres de características, índices avanzados y máscaras booleanas.

Colab ↗

Indexación en acción: los mismos cuatro paneles de indexación, máscaras, recorte satelital y broadcasting, con una franja resumen que nombra cada técnica.

Colab ↗

Predicción: ¿qué forma sale?

Antes de pulsar nada, adivina la forma del resultado — luego prueba dos formas que no encajan.

Abrir el widget de broadcasting ↗

04 · Reshape y transposición de imágenes reales

III

15 min

Practica hoy

Convertir HWC a CHW y comprobar que los valores de píxeles conservan su significado.

Explora después

Construir lotes de imágenes, comparar NHWC con NCHW e inspeccionar la disposición en memoria.

Colab ↗

transpose no es reshape: la misma comparación de histología entre transpose y reshape, más un lote real NHWC a NCHW con una imagen de histología, una foto de astronauta y una foto de gato, cada una reordenada correctamente.

Colab ↗

📖 Un tensor en Python puro ↗

Predicción: ¿sobrevive esta foto a un reshape?

El mismo error del arranque, ahora en una foto: reshape en vez de transpose sobre el mismo lote.

Abrir el widget de tensor de imagen ↗

Kahoot 1 — Vocabulario de tensores y formas

Pausa activa: Kahoot 1, Vocabulario de tensores y formas. 6 preguntas sobre ejes, formas, indexación y transpose. Entrad en kahoot.it; respondan primero con intuición y luego justifiquen con formas.

Kahoot ↗

05 · Diseño de un pipeline de vídeo

III

15 min

Practica hoy

Rastrear fotogramas muestreados hasta sus índices originales y defender un muestreo para un evento breve.

Explora después

Comparar pipelines completos, costes de relleno y organización de cámaras sincronizadas.

Colab ↗

¿Mito o hecho?

De vuelta de la pausa: tres afirmaciones de las secciones 02–04. Mano alzada para mito.

  1. Barajar cuatro fotogramas deja su media igual.
    Hecho. 1,5 antes y después; por eso la media no puede decirte si el orden sobrevivió.
  2. Si al estandarizar salen NaN, la fórmula tiene un error.
    Mito. Una columna que nunca varía tiene desviación típica 0; tres píxeles de los dígitos nunca varían.
  3. Si una transposición y un reshape dan los dos forma (3, 2, 2), guardan los mismos valores en los mismos sitios.
    Mito. La misma entrada, [1, 0, 0], vale 1 tras la transposición y 4 tras el reshape.

Archivo a frames a tensor a modelo: una tubería de cuatro etapas muestra cómo un vídeo se convierte en un tensor enmascarado, con la fórmula de la máscara de validez.

Colab ↗

06 · Contracción con einsum

IV

15 min

Practica hoy

Contraer el color con einsum, nombrar los ejes restantes y verificar una suma ponderada de píxeles.

Explora después

Expresar operaciones matriciales con einsum y comparar medidas de similitud de dígitos.

Colab ↗

Anatomía de einsum: la expresión np.einsum(‘ij,jk->ik’, A, B) se descompone en sus etiquetas de entrada, el índice compartido y los índices que sobreviven, con un diagrama de las matrices que indexa cada letra.

NumPy y einsum: una tabla asocia producto interno, producto externo, matmul, transpose, traza, diagonal, matmul por lotes y suma por eje con su equivalente en einsum.

Colab ↗

07 · Inversas y la pseudoinversa

IV

15 min

Practica hoy

Mostrar cómo columnas duplicadas dan predicciones idénticas con coeficientes distintos; explicar la elección de norma mínima de pinv.

Explora después

Verificar las cuatro identidades de Moore–Penrose, ajustar datos de vivienda y aplicar pinv a imágenes desplegadas.

Colab ↗

¿Mito o hecho?

De vuelta de la pausa: tres afirmaciones de las secciones 05–06. Mano alzada para mito.

  1. clip[1] es lo segundo que pasó en el video.
    Mito. clip guarda uno de cada 45 fotogramas de 720, así que clip[1] es el fotograma 45.
  2. np.einsum('ii->', A) suma la matriz entera.
    Mito. Una letra repetida conserva solo la diagonal: 8 para [[5, 2], [7, 3]], cuyo total es 17.
  3. np.einsum('ij->', A) suma la matriz entera.
    Hecho. Dos letras distintas, las dos sumadas: 17.

Mismas predicciones, coeficientes distintos

Para columnas duplicadas A = [x, x], las predicciones dependen de la suma de coeficientes.

Coeficientes Predicción Norma al cuadrado
(2, 0) 2*x 4
(0, 2) 2*x 4
(1, 1) 2*x 2

pinv(A) @ (2*x) elige (1, 1), la solución de norma mínima.

¿Qué sigue sin conocerse? Los efectos separados de las características duplicadas.

Colab ↗

Predicción: ¿cuánto se mueve la respuesta?

Mueve el objetivo un 2% y observa qué les pasa a los coeficientes cuando dos columnas dicen casi lo mismo.

Abrir el widget de colinealidad ↗

Explora después

California Housing y la pseudoinversa: un ajuste real de mínimos cuadrados de 20.433 por 7 — valores predichos frente a reales, e histograma de residuales — calculado con la pseudoinversa de Moore-Penrose.

Colab ↗

📖 Gira, estira y vuelve a girar ↗

Explora después

¿Y los tensores? Tres tarjetas. La primera: no hay ninguna inversa tensorial de uso común. Es una pregunta legítima con una respuesta honesta, no un hueco en tu lectura. La segunda: sí existen definiciones, basadas en el producto de Einstein y en el t-producto para tensores de orden 3, y ambas son investigación activa. La tercera: en la práctica se despliega el tensor a matriz, se aplica la pseudoinversa matricial y se vuelve a plegar el resultado. Un tensor de 4 por 3 por 5 se despliega a 4 por 15, cuya pseudoinversa es 15 por 4. Y M A-más M devuelve M exactamente, porque el desplegado no pierde nada.

Aquí empieza también el hilo conductor de la segunda mitad: la pseudoinversa de la sección 07, Tucker en la sección 10 y la deconvolución de Richardson-Lucy en el ejercicio para casa 13 son tres casos de una misma idea — cuando un problema no tiene respuesta exacta ni inversa verdadera, se busca la mejor aproximación estable.

Colab ↗

📖 Inversas tensoriales en la práctica ↗

Kahoot 2 — Einsum, distancia y la pseudoinversa

Pausa activa: Kahoot 2, Einsum, distancia y la pseudoinversa. 6 preguntas sobre einsum, similitud y la pseudoinversa. Entrad en kahoot.it; decidan primero la operación y luego justifíquenla con índices y formas.

Kahoot ↗

08 · Recursión con matrices y vectores

IV

10 min

Practica hoy

Explicar una actualización de estado matricial y relacionar su repetición con una potencia de matriz.

Explora después

Usar iteración de potencias y evaluar pronósticos recursivos del tráfico aéreo.

Colab ↗

Gradient descent también es recursión: las formas escalar, vectorial y matricial del descenso de gradiente se muestran una junto a otra. La misma regla de actualización escala de un número a vectores y matrices.

Colab ↗

📖 Las direcciones que una matriz no gira ↗ 📖 ¿Se puede invertir una función recursiva? ↗

09 · Factorizaciones matriciales

IV

15 min

Practica hoy

Comparar residuos y sensibilidad de coeficientes; seguir coordenadas reducidas hasta la reconstrucción.

Explora después

Medir otras factorizaciones, comprimir imágenes con SVD e inspeccionar factores NMF.

Colab ↗

Factoriza una vez, resuelve muchas: el mismo problema real de mínimos cuadrados de tres formas. Las ecuaciones normales son las más rápidas de escribir, y elevan al cuadrado el número de condición. QR es la opción estable por defecto, y nunca forma A-traspuesta-A. La SVD es la más cara y la más informativa, porque Eckart-Young da el error de truncamiento sin construir el truncamiento.

Colab ↗

📖 ¿Vectores propios o singulares? ↗

10 · Descomposición de Tucker con datos reales

IV

15 min

Practica hoy

Explicar formas del núcleo y factores, medir almacenamiento y error, y elegir rangos Tucker según un límite de error.

Explora después

Implementar HOSVD e inspeccionar desplegados, interacciones del núcleo y barridos de rangos.

Colab ↗

¿Mito o hecho?

De vuelta de la pausa: tres afirmaciones de las secciones 07–09. Mano alzada para mito.

  1. Si pinv devuelve una respuesta sin quejarse, la matriz era invertible.
    Mito. pinv responde para cualquier matriz. Con una columna duplicada responde para una matriz de rango 2, y P @ A no es la identidad.
  2. Un pronóstico con un 1% de error a un paso puede errar más de un 3% a doce pasos.
    Hecho. Con w = 1.1, el error crece a 1% × 1,1¹² = 3,14%.
  3. Dos ajustes pueden ser casi exactos y aun así discrepar en sus coeficientes.
    Hecho. Sus predicciones difieren en 0,000001 y sus coeficientes en 1,41.

Tabla a tensor a HOSVD a reconstrucción: una tubería de cuatro pasos convierte una tabla de viajes en un tensor de orden 3, calcula su núcleo y factores por HOSVD, y lo reconstruye mostrando el error.

Colab ↗

📖 Para qué sirve factorizar un tensor ↗

Golf de compresión: hoyo 1

Guarda el tensor de taxis en el menor número de números posible, con un error relativo por debajo del 7%. Gana quien guarde menos.

  • Salida desde los rangos (2, 2, 3): 102 números, 6,70% de error.
  • El explorador de rangos imprime tu puntuación bajo sus mapas de calor.
  • Publica una línea: rangos · números · error.

Predicción: ¿qué hora elige el factor de hora?

480 conteos de taxis se convierten en un núcleo pequeño y tres matrices factor. El cuaderno imprimió una hora; encuéntrala en la imagen.

Abrir el widget de Tucker ↗

Kahoot 3 — Convolución y descomposiciones tensoriales

Pausa activa: Kahoot 3, Convolución y descomposiciones tensoriales. 6 preguntas sobre convolución, correlación, Tucker y CP. Entrad en kahoot.it; reconozcan primero la estructura y luego elijan el operador.

Kahoot ↗

11 · Factorizaciones tensoriales

IV

15 min

Practica hoy

Comparar CP y Tucker sobre el mismo tensor mediante conteos de parámetros, errores de reconstrucción y diferencia de presupuestos.

Explora después

Estudiar Tensor Train y t-SVD, investigar unicidad de CP y comprimir capas de redes neuronales.

Colab ↗

Explora después

Cuatro descomposiciones, cuatro tratos. CP guarda una suma de componentes de rango 1, R por I más J más K números, y es la opción cuando hay que leer los componentes uno a uno. Tucker guarda un subespacio por modo más un núcleo, y es la opción cuando cada modo necesita su propio rango. Tensor Train guarda una cadena de núcleos pequeños, que crece solo linealmente con el orden, y es la opción cuando un núcleo denso explotaría. Y t-SVD aplica una FFT sobre el modo 3, SVD matriciales y una FFT inversa, y es la opción cuando el tercer modo tiene un significado propio.

Colab ↗

📖 CP o Tucker ↗

Golf de compresión: hoyo 2

Ahora vale cualquier modelo. Error relativo por debajo del 2%; gana quien guarde menos.

  • golf("cp", 4) o golf("tucker", (4, 4, 3)) imprime una línea de puntuación.
  • El hoyo 1 se ganó con 60 números. Esta barra cuesta más.
  • Publica tu mejor línea.

Predicción: mismo presupuesto — ¿quién gana?

El mismo presupuesto de parámetros, gastado como CP y como Tucker — cuando las parejas ya tengan sus propios números.

Abrir el widget de presupuesto ↗

Una idea conecta el taller

Aproximar estructura útil cuando la solución exacta no basta.

Pseudoinversa

Sección 07

Precios de vivienda frente a las predicciones de la pseudoinversa para los 20.433 distritos: una nube de puntos alrededor de una línea discontinua de predicción perfecta.

X.shape = (20433, 7): 20.433 ecuaciones, 7 incógnitas, sin solución exacta. pinv(X) @ y da el ajuste por mínimos cuadrados; la línea discontinua es una predicción perfecta.

Tucker

Sección 10

Viajes en taxi por hora del día, contados, dibujados como barras, y reconstruidos a partir de 60 números, dibujados como una línea. Ambos alcanzan su máximo a la hora 18, que está marcada.

480 conteos de taxis guardados como 60 números, rangos (3, 3, 1), con un 4,69% de error. Viajes por hora, contados y reconstruidos: ambos alcanzan su máximo a las 18:00.

Deconvolución

Ejercicio para casa 13

La fotografía del camarógrafo, el mismo recorte desenfocado y con ruido, y la recuperación de Richardson-Lucy, más nítida pero no exacta.

Un desenfoque conocido de 9 × 9, deshecho de forma aproximada: Richardson–Lucy, 20 iteraciones, error del 18,9% al 13,1%. Plausible, no exacta.

problema difícil → estructura → aproximación útil

Idea clave: no siempre buscamos exactitud algebraica; buscamos una representación que conserve lo importante.

Colab ↗

12 · Cierre y ejercicios para casa

—

5 min

Practica hoy

Aplicar razonamiento sobre ejes a datos nuevos y explicar por qué Tucker recupera la forma mientras pierde información.

Explora después

Elegir trabajo posterior sobre PCA, atención, CP, Cholesky, audio o los estudios 13–16.

Colab ↗

📖 Por fin entendí Fourier ↗