tensorly.kruskal_to_tensor() 方法解释

tensorly.kruskal_to_tensor() method explanation

我试图理解 tensorly 包中的 tl.kruskal_to_tensor () 方法。 在 webpage 中,我理解它以矩阵列表作为输入并生成其 cp-decomposiiton 是矩阵的张量?它以矩阵列表作为输入。

但是我看到了下面的代码:

import tensorly as tl
rank =5
dim1= 9
dim2=8
dim3=7
A= tl.tensor(np.random.normal(0,1,[dim1,rank]))
B= tl.tensor(np.random.normal(0,1,[dim2,rank]))
C= tl.tensor(np.random.normal(0,1,[dim3,rank]))

T_approx_old = tl.kruskal_to_tensor((np.ones(rank),[A,B,C]))

我不明白方法中的 np.ones(rank) 参数。

它有什么作用?

此版本的 kruskal_to_tensor 记录在 dev version of the API

np.ones对应Kruskal张量的权重:Kruskal张量将张量表示为秩一张量(向量的外积,收集为因子矩阵的列)的加权和。在你的例子中,总和的权重都是 1 并累积在这个 1 的向量中。

请注意,您可以 normalize Kruskal 张量的因子并在这些权重中吸收它们的大小。