不能将塔克分解中的秩定义为等于原始维数

2024-06-25 06:11:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Tensorly的tucker将Tucker分解应用于T形状(500, 500, 3, 28)的张量T,我无法定义秩等于原始维度的秩,例如:

我能做到:

from tensorly.decomposition import tucker
tucker(T, [2, 2, 2, 27])

但当我从27岁变为28岁时:

tucker(T, [2, 2, 2, 28])

程序挂起。你知道为什么会这样吗


Tags: fromimport程序定义形状decompositiontucker试图用
2条回答

如果秩等于原始大小,则不能应用稀疏奇异值分解,展开时需要一个完整的(计算量大的)奇异值分解。通过设置init='random'可以绕过SVD,这就是为什么SVD更快的原因

有效的方法是在tucker调用中设置init='random'

我不知道到底为什么,但它奏效了

相关问题 更多 >