파이썬 라이브러리 scikit-tensor을 사용하여 3D 매트릭스를 분해하려고합니다. 나는 Tensor (치수 100x50x5)를 세 개의 행렬로 분해했습니다. 제 질문은 어떻게 텐서 인수 분해로 생성 된 분해 된 매트릭스를 사용하여 초기 매트릭스를 다시 구성 할 수 있습니까? 분해가 의미가 있는지 확인하고 싶습니다.텐서 인수 분해 후 텐서를 다시 작성하십시오
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)
나는 scikit-텐서 라이브러리 함수 cp_als에서 제공 한 정규 분해를 사용하고 있습니다 : 내 코드는 다음과 같다. 또한 분해 된 행렬의 예상되는 차원은 무엇입니까?
cp.py는 말한다 : $ \ approx \ sum_ {r = 1}^{rank} \\ vec {u} _r^{(1)} \ outer \ cdots \ outer \\ vec {u} _r^{(N)} $. 너 그거 해봤 니? 이것은 "P.totensor()"와 동일해야합니다. – Bort
@bort cp.py의 145와 146 행을 의미합니까? –