我正在尝试理解tensorly包中的tl.kruskal_to_tensor ()方法。在webpage中,我知道它接受一列矩阵作为输入,并生成其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(排名)参数。
是干什么的呢?
发布于 2020-03-27 21:27:51
dev version of the API中记录了此版本的kruskal_to_tensor。
np.ones对应于Kruskal张量的权重: Kruskal张量将张量表示为秩1张量的加权和(向量的外积,收集为因子矩阵的列)。在您的例子中,总和的权重都是1,并在这个1的向量中累加。
注意,你可以normalize你的Kruskal张量的因子,并在这些权重中吸收它们的大小。
https://stackoverflow.com/questions/60876383
复制相似问题