Inicio · Parte 06 — Álgebra lineal II: descomposiciones y tensores
'ij,jk->ik' producto matricial
'ii->' traza
'ij,ij->' producto de Frobenius
'ij->ji' transposición
La notación de Einstein, introducida en 1916 para simplificar la escritura de la relatividad general, establece un convenio: los índices que aparecen repetidos se suman. Con esa única regla, operaciones que en notación matricial requieren nombres distintos se escriben de forma uniforme.
La implementación moderna, einsum, hace explícitos los índices de entrada y de salida. 'ij,jk->ik' dice: toma dos tensores con esos índices, suma sobre j —repetido— y deja i y k. Eso es el producto matricial. Cambiar la cadena a 'ij,ij->' da el producto de Frobenius, y a 'ij->ji', la transpuesta.
Su ventaja práctica es doble. Primero, legibilidad: en operaciones con tensores de orden 4 o 5 —habituales en atención multi-cabeza— la cadena de índices dice exactamente qué se contrae con qué, mientras que una secuencia de transpose, reshape y matmul no lo dice. Segundo, optimización: la implementación puede elegir el orden de contracción más barato, igual que el orden de evaluación de la clase 111.
La atención escalada se escribe en una línea con einsum: 'bqd,bkd->bqk' calcula todos los productos punto entre consultas y claves de un lote. Leer esa cadena es leer la operación.
Cinco operaciones con la misma notación.
A = [[1,2],[3,4]] B = [[5,6],[7,8]]
'ij,jk->ik' producto [[19,22],[43,50]]
'ii->' traza de A 5
'ij,ij->ij' Hadamard [[5,12],[21,32]]
'ij,ij->' Frobenius 70
'ij->ji' transpuesta [[1,3],[2,4]]
Una sola notación para todas.
Notación de Einstein: índices repetidos se suman.
python classes/part-06-algebra-lineal-ii-descomposiciones-y-tensores/139-einstein-summation/lab.py
compmath run 139
'ij,jk->ik' (producto)'ii->' (traza)'ij,ij->ij' (Hadamard)'ij,ij->' (Frobenius)'ij->ji' (transpuesta)ventaja{
"'ij,jk->ik' (producto)": [
[
19.0,
22.0
],
[
43.0,
50.0
]
],
"'ii->' (traza)": 5.0,
"'ij,ij->ij' (Hadamard)": [
[
5.0,
12.0
],
[
21.0,
32.0
]
],
"'ij,ij->' (Frobenius)": 70.0,
"'ij->ji' (transpuesta)": [
[
1.0,
3.0
],
[
2.0,
4.0
]
],
"ventaja": "una sola notación para producto, traza, contracción y reordenamiento"
}
Atención multi-cabeza, contracciones tensoriales, operaciones por lotes y cualquier manipulación de tensores de orden alto.
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.
einsum — Álgebra lineal: el tema de esta clase · URL de la fuente primaria comprobada en NumPy developers (2026-08-19).