Cuadernos
Un cuaderno por sección, más estudios a fondo para casa, y cada uno se ejecuta en frío en Colab
Cada sección del taller tiene su cuaderno. Otros cuadernos ofrecen estudios a fondo para casa. Están escritos principalmente en inglés, y cada encabezado lleva un resumen de una línea en español.
Cómo están construidos
Los cuadernos 01–11 separan la sesión en vivo del estudio posterior:
- Encabezado: Practica hoy y Explora después, con los mismos resultados que las diapositivas y el manual.
- Ejecuta primero la celda de preparación y luego sigue de arriba abajo. Cada cuaderno abre con una ruta corta: un recuerdo rápido, un ejemplo resuelto y después tu propio intento, con retroalimentación y una comprobación. Intenta el ejercicio tú mismo antes de abrir la solución plegada.
- Fin de la ruta esencial: aquí termina la ruta anterior. Guarda tu explicación —es lo que necesita la sesión— y sigue las pausas y cuestionarios del facilitador.
- Explora después: material opcional al que vuelves más tarde —más consulta, ejercicios y exploradores.
El cuaderno 00 conserva el diagnóstico de entrada y la preparación previa; el 12 empieza con la comprobación de salida. Los estudios a fondo aparecen más abajo, en Para ir más lejos. Las soluciones siguen plegadas: ábrelas tras un intento. Cada cuaderno carga sus propios datos y se ejecuta de forma independiente.
Los cuadernos se guardan sin salidas y sin números de ejecución. Cada número que veas es uno que has producido tú. El texto cita los resultados esperados, así que puedes comprobar si los tuyos son correctos. Si los tuyos difieren, eso merece investigarse en lugar de descartarse.
Los cuadernos
| # | Abrir | Cuaderno | Contenido |
|---|---|---|---|
| 00 | 00-setup-and-data.ipynb |
Preparación y bienvenida — Carga todos los conjuntos de datos y confirma que tu entorno funciona antes de que empiece el taller. | |
| 01 | 01-what-a-tensor-is.ipynb |
Qué es un tensor — Aprender a leer la estructura de un tensor y seguir el significado de sus ejes al fijarlos, reorganizarlos o contraerlos. | |
| 02 | 02-thinking-in-n-dimensions.ipynb |
Pensar en N dimensiones — Aprender a leer tensores reales preguntando qué cuenta cada eje y por qué un eje de lote no significa lo mismo que un eje temporal. | |
| 03 | 03-indexing-and-broadcasting.ipynb |
Indexación y broadcasting con datos reales — Seleccionar medidas reales por nombre, comparar subconjuntos con máscaras booleanas y detectar píxeles de varianza cero. | |
| 04 | 04-reshape-and-transpose.ipynb |
Reshape y transposición de imágenes reales — Reordenar ejes correctamente en imágenes y lotes reales, y comprobar por qué reshape puede conservar la forma mientras destruye el significado. |
|
| 05 | 05-video-pipeline-design.ipynb |
Diseño de un pipeline de vídeo — Convertir un archivo de vídeo real en un tensor, observar qué se pierde al muestrear fotogramas y diseñar formas tensoriales que respeten el significado del tiempo. | |
| 06 | 06-contraction-with-einsum.ipynb |
Contracción con einsum — Aprender una sola regla de índices, comprobarla con datos reales y cambiar las entradas de forma interactiva para identificar qué índice desaparece. | |
| 07 | 07-inverses-and-pseudoinverse.ipynb |
Inversas y la pseudoinversa — Usar la pseudoinversa en sistemas reales singulares, altos y anchos, e inspeccionar su geometría de forma interactiva. | |
| 08 | 08-recursion-with-matrices.ipynb |
Recursión con matrices y vectores — Entender una recurrencia como una actualización de estado repetida, observar cuándo domina una dirección propia y comprobar qué ocurre cuando un pronóstico reutiliza sus propias predicciones. | |
| 09 | 09-matrix-factorizations.ipynb |
Factorizaciones matriciales — Compara LU, QR, Cholesky, descomposición espectral, SVD y NMF sobre datos reales y descubre qué pregunta responde cada una y cuánto cuesta. | |
| 10 | 10-tucker-decomposition.ipynb |
Descomposición de Tucker con datos reales — Construir un tensor real de viajes en taxi, comprimir cada modo con HOSVD y explorar el compromiso entre tamaño, error e interpretación. | |
| 11 | 11-tensor-factorizations.ipynb |
Factorizaciones tensoriales — Compara CP, Tucker/HOSVD, Tensor Train y t-SVD, entiende qué estructura conserva cada método y mide cuánto cuesta cada representación. | |
| 12 | 12-wrap-up-and-take-homes.ipynb |
Cierre y ejercicios para casa — Resume la idea que conecta el taller y luego elige entre cinco extensiones: PCA, atención, CP, Cholesky y audio. |
Para ir más lejos
Estos no son secciones. Son estudios a fondo, entregados como material para casa. No tienen diapositivas, ni Kahoot, ni minutos en el reloj del taller: la agenda de 210 minutos es exactamente la misma sin ellos. La ruta esencial de la sección 11 compara CP y Tucker mediante llamadas a la biblioteca; su panorama de cuatro modelos es material de ampliación. Los cuadernos 14 y 15 parten de esa comparación: ajustan CP a mano y después cambian qué significa «ajustar».
| # | Abrir | Estudio a fondo |
|---|---|---|
| 13 | 13-convolution-and-deconvolution.ipynb — Convolución y deconvolución — Ver la convolución como un operador lineal estructurado, distinguir correlación de convolución, entender la convolución transpuesta y recuperar parcialmente una imagen real desenfocada. |
|
| 14 | 14-cp-factorization.ipynb — Factorización CP y la vista de rango 1 — Leer una componente CP como un vector por eje, ajustarla con mínimos cuadrados alternos, restringirla a valores no negativos y ver cómo grabaciones neuronales reales se ordenan solas según una etiqueta que el método nunca vio. |
|
| 15 | 15-generalized-cp.ipynb — CP generalizado para conteos y datos binarios — El error cuadrático es una hipótesis de modelado, no la definición de buen ajuste. Cámbialo por una pérdida de Poisson o Bernoulli, descompón un tensor real de conteos de delitos — incluida una componente que resulta ser un artefacto del fichero — y después entrégale el mismo objetivo a PyTorch para ver qué hace el momento con él. |
|
| 16 | 16-pca-from-tensors.ipynb — PCA desde la perspectiva de los tensores — Conectar covarianza, correlación, eigendescomposición y SVD con parches satelitales reales; evaluar clasificación y agrupamiento, ajustar PCA multilineal y recuperar una señal tensorial sintética. |
|
| 17 | 17-multi-head-attention.ipynb — Atención multicabeza 4D: reorganiza Q, K y V — Separar características en cabezas, verificar pasos de memoria e identidad de tokens, calcular atención escalada y comparar NumPy con PyTorch. |
|
| 18 | 18-feature-compression.ipynb — Compresión de características latentes con SVD — Comprimir una imagen HWC con SVD truncada, comparar rangos y energía retenida, verificar la reconstrucción con PyTorch y distinguir rango matricial de rango CP. |
|
| 19 | 19-cp-or-tucker-in-practice.ipynb — CP o Tucker en la práctica — Llevar CP y Tucker a un grafo de conocimiento real, un kernel entrenado de ResNet-18 y una fotografía: ver qué núcleo puede expresar una relación asimétrica, cuál guarda un kernel con menos números y a qué precio oculto, cómo elegir el rango, y por qué el modelo que mejor comprime no es el que mejor predice. |
|
| 20 | 20-alphatensor.ipynb — AlphaTensor: multiplicar matrices como un juego — Escribir la multiplicación de matrices como un tensor de ceros y unos, comprobar que los siete términos de rango uno de Strassen lo reconstruyen exactamente, jugar la búsqueda de esos términos como un juego de un jugador que un jugador codicioso gana en 8 jugadas y nunca en 7, y verificar las factorizaciones que publicó AlphaTensor: 47 multiplicaciones para matrices 4 × 4 módulo 2, donde el récord era 49. |
El estudio 19 recorre la entrada del blog CP or Tucker in practice (en inglés).
El estudio 20 recorre las tres entradas AlphaTensor del blog (en inglés): escribe la multiplicación de matrices como un tensor, juega la búsqueda de un algoritmo más rápido como un juego en el caso más pequeño y comprueba las factorizaciones que publicó DeepMind. No entrena nada.
Las herramientas del navegador que acompañan a las secciones tienen su propia página: Interactivo dedica una tarjeta a cada una, con las secciones a las que pertenece y las escenas que vale la pena abrir directamente.
Ejecutarlos fuera de Colab
Los cuadernos solo necesitan el stack científico de Python. En local:
git clone https://github.com/project-delphi/tensors-workshop.git
cd tensors-workshop
uv run --group notebooks jupyter labEl grupo notebooks está declarado en pyproject.toml, y se deriva de los propios import de los cuadernos en lugar de escribirse a mano junto a ellos. matplotlib e ipywidgets están en él porque los cuadernos usan gráficas y widgets interactivos. Los dos vienen con Colab, así que si falta uno solo se nota al ejecutar en local.
scikit-learn y scikit-image traen consigo los datos de tumores, los dígitos manuscritos y las fotografías. Algunos cuadernos usan solo datos incluidos; otros descargan datos o instalan paquetes. La tabla generada de abajo indica los requisitos de red de cada cuaderno.
Qué necesita cada cuaderno
| Cuaderno | Además de NumPy | Red |
|---|---|---|
| 00 | matplotlib, ipywidgets, pandas, scikit-learn, scikit-image, scipy, pillow, imageio† |
sí — vivienda en California, pasajeros de aerolínea, viajes en taxi de Nueva York, el clip de la tormenta (solo un sondeo de 1 KB) |
| 01 | matplotlib, ipywidgets, scikit-learn, scikit-image, pillow |
no |
| 02 | matplotlib, ipywidgets, scikit-learn, scikit-image, pillow, imageio† |
sí — el clip de la tormenta |
| 03 | matplotlib, ipywidgets, pandas, scikit-learn, pillow |
no |
| 04 | matplotlib, ipywidgets, scikit-image, pillow |
no |
| 05 | matplotlib, ipywidgets, pillow, imageio† |
sí — el clip de la tormenta |
| 06 | matplotlib, ipywidgets, scikit-learn, scikit-image, pillow |
no |
| 07 | matplotlib, ipywidgets, pandas, scikit-learn, pillow |
sí — vivienda en California |
| 08 | matplotlib, ipywidgets, pandas, pillow |
sí — pasajeros de aerolínea |
| 09 | matplotlib, ipywidgets, pandas, scikit-learn, scikit-image, scipy, pillow |
sí — pasajeros de aerolínea |
| 10 | matplotlib, ipywidgets, pandas, pillow |
sí — viajes en taxi de Nueva York |
| 11 | matplotlib, ipywidgets, pandas, pillow, tensorly†, imageio† |
sí — viajes en taxi de Nueva York, el clip de la tormenta |
| 12 | matplotlib, ipywidgets, pandas, scikit-learn, scipy, pillow |
sí — una grabación de voz (para el ejercicio E) |
| 13 | matplotlib, ipywidgets, scikit-image, scipy, pillow |
no |
| 14 | matplotlib, ipywidgets, scipy, pillow, tensorly† |
sí — las grabaciones BMI del mono (5 MB, una vez) |
| 15 | matplotlib, ipywidgets, pandas, scipy, pillow, pyttb†, torch† |
sí — informes de delitos de Chicago (3 MB, una vez) |
| 16 | matplotlib, ipywidgets, pandas, scikit-learn, pillow |
sí — parches satelitales de UCI Landsat (archivo de 101 KB, con caché) |
| 17 | matplotlib, ipywidgets, torch |
no |
| 18 | matplotlib, ipywidgets, torch |
no |
| 19 | matplotlib, ipywidgets, pandas, scikit-image, scipy, tensorly†, torch |
sí — el grafo de conocimiento FB15k-237 (21 MB, una vez), un kernel de ResNet-18 y ajustes guardados |
| 20 | matplotlib, ipywidgets |
sí — las factorizaciones que publicó AlphaTensor (menos de 1 MB, una vez) |
† Lo instala el propio cuaderno con %pip install -q, y por eso ninguno de los dos está en el comando de arriba.