El tamaño de una componente CP vive en un solo peso
Una componente CP es un vector por eje y nada más: T[i, j, k] = a[i] · b[j] · c[k].
t1 = np.einsum("i,j,k->ijk", a, b, c)
t2 = np.einsum("i,j,k->ijk", 2 * a, b / 2, c)
assert np.allclose(t1, t2) # el tensor no se movió
Duplica un vector y divide otro a la mitad y el tensor de rango 1 no se mueve, así que la magnitud de un vector de factores es aritmética, no datos. Solo dos cosas se pueden leer: el perfil de norma unitaria —la forma de los picos y valles— y un único peso que guarda todo el tamaño, lam, que es lo que tensorly devuelve como weights. Normaliza antes de comparar dos componentes o de nombrar un pico.