【问题标题】:Python tensorly parafac returning ValueErrorPython张量parafac返回ValueError
【发布时间】:2021-05-06 10:05:35
【问题描述】:

我有一组人造数据(由显式数学函数生成)存储在一个名为 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

我安装(并且刚刚再次更新)张量库:

pip3 install -U tensorly

但是,当我在 Jupyter 笔记本中运行相同的代码时,它会按预期工作。 我通过 Pip 安装的内容与 Jupyter 笔记本的 IPython 中的内容似乎有所不同。有人可以帮忙吗?

【问题讨论】:

    标签: python-3.x jupyter-notebook tensorly


    【解决方案1】:

    在最新版本的 TensorLy 中,parafac 返回一个充当元组(权重,因子)的 CPTensor:除了分解的因子之外,您还可以获得一个权重向量。这是因为 CP 分解将原始张量表示为 rank-1 张量的加权和。

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

    weights, factors = parafac(tensor, rank)
    

    或者,如果您想将每个因子显式存储在变量中,如您的示例所示:

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

    【讨论】:

    • 优秀的答案让。这解释了我在两个版本之间看到的行为差异。谢谢。
    猜你喜欢
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多