我有一组人造数据(由一个显式的数学函数生成)存储在一个叫做A的三维张量中。当我尝试运行parafac时,我会收到以下信息:
Traceback (most recent call last):
File "./ParafacPrintValues.py", line 145, in <module>
A1, A2, A3 = parafac(A,2)
ValueError: not enough values to unpack (expected 3, got 2)我是这样进口parafac的:
from tensorly.decomposition import parafac我安装了(并且刚刚更新了) tensorly库,其中包括:
pip3 install -U tensorly然而,当我在木星笔记本上运行相同的代码时,它就像预期的那样工作。看来我通过Pip安装的东西和木星笔记本的IPython有区别。有人能帮忙吗?
发布于 2021-05-07 09:33:26
在最新版本的TensorLy中,parafac返回一个作为元组的CPTensor (权重、因子):除了分解的因素之外,还会得到一个权重向量。这是因为CP分解将原来的张量表示为秩-1张量的加权和。
换句话说,如果您使用的是最新版本的TensorLy,您的代码应该是:
weights, factors = parafac(tensor, rank)或者,如果您想像在示例中一样显式地将每个因素存储在变量中:
weights, (A1, A2, A3) = parafac(tensor, rank)https://stackoverflow.com/questions/67415972
复制相似问题