Project DelphiTaller de Tensores

Producto Khatri–Rao

Producto Khatri–Rao ⊙ — el producto de Kronecker columna a columna.

P es (I, R) y Q es (J, R); P ⊙ Q es (I·J, R), y la columna r es el producto exterior de P[:, r] y Q[:, r], aplanado:

def khatri_rao(P, Q): return (P[:, None, :] * Q[None, :, :]).reshape(-1, P.shape[1])

Es lo que convierte la ecuación tensorial en la ecuación matricial que una pseudoinversa puede resolver. Y el atajo (BᵀB) * (CᵀC) — elemento a elemento, R × R — da (B ⊙ C)ᵀ(B ⊙ C) sin formar directamente la matriz de Gram de la matriz alta, y por eso el coste no se dispara.