tensorly.kruskal_to_sensor()方法解释



我正在尝试理解tensorly包中的tl.kruskal_to_sensor((方法。在网页中,我知道它将矩阵列表作为输入,并产生张量,其cp分解是矩阵?它将矩阵列表作为输入。

但我看到了以下代码:

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(秩(论点。

它做什么?

此版本的kruskal_to_tensor记录在API的开发版本中。

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

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

最新更新