Tôi đang cố gắng phân tích ma trận 3D bằng thư viện python scikit-tensor. Tôi quản lý để phân hủy Tensor của tôi (với kích thước 100x50x5) thành ba ma trận. Câu hỏi của tôi là làm thế nào tôi có thể tạo ma trận ban đầu một lần nữa bằng cách sử dụng ma trận phân hủy được tạo ra với hệ số Tensor? Tôi muốn kiểm tra xem sự phân hủy có ý nghĩa gì không. Mã của tôi là như sau:Tái tạo một Tensor sau khi hệ số tensor
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)
Tôi đang sử dụng phân tích kinh điển như được cung cấp từ hàm scikit-tensor library cp_als. Ngoài ra kích thước mong đợi của ma trận bị phân hủy là gì?
cp.py nói: $ Một \ approx \ sum_ {r = 1}^{xếp hạng} \\ vec {u} _r^{(1)} \ outer \ cdots \ outer \\ vec {u} _r^{(N)} $. Bạn đã thử chưa Điều này phải giống hệt với "P.totensor()" – Bort
@Bạn có nghĩa là các dòng 145 và 146 của cp.py không? –