11 lines
368 B
Python
11 lines
368 B
Python
def hosvd(X):
|
|
U = [None for _ in range(X.ndims())]
|
|
dims = X.ndims()
|
|
S = X
|
|
for d in range(dims):
|
|
C = base.unfold(X,d) #mode n分解
|
|
U1,S1,V1 = np.linalg.svd(C) #SVD分解
|
|
S = base.tensor_times_mat(S, U1.T,d) #迭代求解核心张量
|
|
U[d] = U1
|
|
core = S
|
|
return U,core #返回伴随矩阵和核心张量 |