Próbuję rozłożyć macierz 3D przy użyciu biblioteki Pythona scikit-tensor. Udało mi się rozłożyć mój Tensor (o wymiarach 100x50x5) na trzy macierze. Moje pytanie brzmi: jak mogę ponownie skomponować matrycę początkową, używając rozłożonej matrycy wytworzonej przy użyciu faktoryzacji Tensor? Chcę sprawdzić, czy dekompozycja ma jakiekolwiek znaczenie. Mój kod jest następujący:Ponownie skomponuj tensor po faktoryzacji z tensorem
import logging
from scipy.io.matlab import loadmat
from sktensor import dtensor, cp_als
import numpy as np
//Set logging to DEBUG to see CP-ALS information
logging.basicConfig(level=logging.DEBUG)
T = np.ones((400, 50))
T = dtensor(T)
P, fit, itr, exectimes = cp_als(T, 10, init='random')
// how can I re-compose the Matrix T? TA = np.dot(P.U[0], P.U[1].T)
Używam rozkład kanoniczny, zgodnie z scikit-tensorowych cp_als funkcji biblioteki. Jaka jest oczekiwana wymiarowość rozłożonych matryc?
cp.py mówi: $ A \ approx \ sum_ {r = 1}^{rank} \\ vec {u} _r^{(1)} \ outer \ cdots \ outer \\ vec {u} _r^{(N)} $. Czy próbowałeś tego? Powinno to być identyczne z "P.totensor()" – Bort
@ Czy masz na myśli linie 145 i 146 cp.py? –