Python tensorly parafac 返回 ValueError

Python tensorly parafac returning ValueError

我有一组人造数据(从显式数学函数生成)存储在名为 A 的 3 维张量中。 当我尝试 运行 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

但是,当我 运行 在 Jupyter notebook 中使用相同的代码时,它按预期工作。 看来我通过 Pip 安装的内容与 Jupyter notebook 的 IPython 中的内容有所不同。有人可以帮忙吗?

在最新版本的TensorLy中,parafac returns一个CPTensor作为一个元组(权重,因子):除了分解的因子,你还得到一个向量权重。这是因为CP分解将原始张量表示为rank-1张量的加权和。

换句话说,如果您使用的是最新版本的 TensorLy,您的代码应该是:

weights, factors = parafac(tensor, rank)

或者,如果您想像示例中那样将每个因素显式存储在变量中:

weights, (A1, A2, A3) = parafac(tensor, rank)