Interactivo
Sin instalar nada y sin cuenta. Cada una de estas herramientas se ejecuta en tu navegador, en inglés o en español, y responde una pregunta que las páginas solo pueden describir: mueve un control y las formas, los strides y los números se mueven con él. Todas están además enlazadas desde la sección a la que pertenecen, en el manual y en los cuadernos.
🧮 Simulador de broadcasting
Escribe dos formas. Mira cómo NumPy las alinea desde la derecha, rellena la más corta y estira cada eje de tamaño 1 — o lo rechaza, y dice en qué eje. Sección 03.
🧊 El tensor de imagen
Tres fotos reales como un solo tensor 4-D, un cubo por byte, hasta 128 × 128. Transpónlo y observa cómo los cubos siguen la nueva forma sin que se mueva ni un byte del búfer; hazle reshape y mira cómo la imagen se rompe; reescribe el búfer en C, Fortran o channels_last y verás que solo se mueve la memoria. Cada clic imprime el NumPy y el PyTorch que lo hace. Sección 04.
Directo a transpose, reshape o la disposición en memoria.
👁️ La atención, de las palabras a los pesos
Una frase de cuatro palabras, “I know you know”, seguida a través de una sola cabeza de atención con números lo bastante pequeños como para sumarlos a mano: las palabras cortadas en tokens, los tokens codificados como ids, los ids trayendo filas de una tabla de embeddings, esas filas proyectadas en consultas, claves y valores, las puntuaciones, por qué se dividen entre √d_k, softmax convirtiéndolas en pesos que suman uno, y el promedio ponderado que es la salida. Después, más cabezas y el lote que recibe un modelo real. Cada imagen lleva el NumPy que la calcula. Secciones 04 y 06, y apéndice B.
Directo a por qué √d_k, las puntuaciones, softmax o cada cabeza con su propio eje.
📐 Escenario de proyección y SVD
Los mínimos cuadrados son una proyección: desplázate y observa cómo la sombra de un vector objetivo aterriza en el plano que generan sus predictores, con el residuo encontrándolo en ángulo recto. Después el portal de la SVD, donde una circunferencia unidad se vuelve una elipse y A v = σ u deja de ser notación, y de ahí a los autovectores, dos columnas casi colineales y float32 dividiendo exactamente por cero. Un mismo problema, secciones 07, 08 y 09.
Directo al portal de la SVD, los autovectores o float32 dividiendo por cero.
🎙️ El tensor de audio
El aire se vuelve números: 48 000 por segundo, cada uno redondeado a 16 bits, escritos en un array que puedes escuchar. Luego se recorta una ventana, se le pregunta a la transformada qué frecuencias hay en ella, y la ventana avanza para construir una matriz de frecuencia por tiempo, 513 × 465, y puedes oír qué le hace una transposición. Termina en el lote de rango 4 que recibe un modelo: tres grabaciones apiladas. Secciones 00, 02, 04 y 09, y apéndice E.
Directo a una ventana, la transformada, la mejor aproximación de rango k que existe o el lote.
🚕 Tucker y CP
Un tensor real, factorizado de dos maneras: 6.383 viajes de taxi de Nueva York, barrio de origen por barrio de destino por hora del día, como un cubo de vóxeles que puedes girar y en el que puedes hacer clic: tres cuartas partes de él son una sola ruta de Manhattan. Mira cómo el cubo se extiende en cada desplegado, qué encuentra la SVD de uno de ellos, y recompón un núcleo pequeño más tres matrices factor: 480 números reducidos a 102, con un 6,7% de error, y una sola entrada del núcleo que lleva el 99% del ajuste. Luego construye el mejor término de rango 1 que existe, mira cómo son varios de ellos, reproduce los mínimos cuadrados alternos resolución a resolución desde cinco puntos de partida que no siempre coinciden, y gasta un mismo presupuesto de parámetros de las dos maneras. Secciones 10 y 11, y apéndice C.
Directo al cubo extendido, al núcleo y sus tres factores, a un término de rango 1, a ALS, resolución a resolución o al mismo presupuesto gastado de dos maneras.
🧬 Del ADN a una edición
Un gen es una cadena sobre un alfabeto de cuatro letras, y eso ya es un tensor: 180 bases de un gen cas12a real se convierten en una rejilla de 180 × 4 de unos y ceros, con un 1 por fila. Sigue ese tramo por todo lo que hace una célula con él. Una ventana deslizante recorta 161 vistas sin copiar ninguna base. Una enzima lee una hebra y el ARN sale leyéndose como la otra, porque la transcripción es una matriz de 4 × 4 y dos complementos se deshacen entre sí. Un codón son tres vectores one-hot multiplicados entre sí, el código genético es un 4 × 4 × 4 y la traducción es una sola contracción entre ambos — donde cambiar la tercera base de un codón es la primera edición de la página, y a menudo no cambia nada. Sesenta residuos caen en 18 puntos de un mapa de propiedades; la proteína entera, tal como la predice AlphaFold, es un arreglo (1300, 3) cuyas distancias son un solo broadcast; y comparar una guía con cada ventana de la secuencia es un solo einsum — 161 ventanas, una coincidencia perfecta, la siguiente en 12 de 20. Bajo cada imagen está el propio gen, con el tramo que esa imagen mira iluminado. Enseña cuál es la aritmética; no es una herramienta para diseñar nada. Secciones 04 y 06, y apéndice G.
Directo a la transcripción como matriz, al código genético como un 4 × 4 × 4, a la traducción como una sola contracción, a el pliegue y su rejilla de distancias o a la búsqueda como un solo einsum.
♟️ AlphaTensor: de una regla a un juego
Multiplicar dos matrices de 2 × 2 cuesta ocho multiplicaciones, y ocho parece un hecho del problema. No lo es. Escribe la regla como la lista de sus ocho productos, pon un 1 en cada uno, y la regla es un cubo de 4 × 4 × 4 de ceros y unos que multiplica matrices con un solo einsum. Descompón ese cubo en bloques que cuestan una multiplicación cada uno y tienes un algoritmo: suma los siete bloques de Strassen de uno en uno y la cuenta de celdas equivocadas sube, de 8 a 12, antes de bajar a cero, porque los bloques se pasan y se cancelan. Aplica las siete a números, luego a los cuartos de una matriz, y una multiplicación ahorrada se vuelve el 73,7 % de ellas en 1.024 × 1.024. Después dale la vuelta: empieza con el cubo y resta bloques hasta que no quede nada. Ese es el juego que juega AlphaTensor. Con cinco coeficientes permitidos una sola jugada tiene 244.140.625 opciones; de las 128.000 jugadas distintas que quedan con tres, 8 parecen un avance y la de Strassen no es una de ellas; y un jugador que siempre elige la jugada que mejor se ve encuentra ocho, nunca siete. La última imagen es el tablero de récords, donde 3 × 3 sigue abierto entre 19 y 23. Bajo cada imagen está el cubo extendido, mostrando lo que esa imagen le hace. La página juega el juego; no ejecuta ni entrena ninguna red, y los resultados de AlphaTensor están citados del artículo. Secciones 06 y 11, y el estudio a fondo 20.
Directo a la regla como un cubo, al producto como un solo einsum, a los siete bloques de Strassen, al juego o a por qué el jugador voraz encuentra ocho.