【问题标题】:Gradient using Autograd package in Python在 Python 中使用 Autograd 包进行渐变
【发布时间】:2018-09-13 21:21:16
【问题描述】:

我正在尝试使用 Autograd 包复制 this standard example

虽然我可以从这个存储库复制其他示例,但这个特定示例会引发如下错误:

    /home/avuis/anaconda/lib/python3.6/sitepackages/autograd/numpy/numpy_vjps.py:444: FutureWarning: 
Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. 
In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.
      return lambda g: g[idxs]

这个相关版本不兼容吗?如果是这样,有什么快速的方法可以解决这个问题?

提前致谢,

【问题讨论】:

  • 这不是您收到的错误,而是警告。此外,此警告不应该影响您此时的结果,但在以后的版本中,我猜它会在您尝试运行的示例中更新。
  • @ĐorđeRelić:是的,这是我的第一印象。但是,不幸的是,代码没有继续迭代 2,也没有显示任何错误。如果有人能确认他们也有类似的问题,至少会很感激。
  • 我刚刚克隆了 repo 并运行了示例 gmm.py。它为我运行,没有任何错误或警告。但是,它也没有产生任何输出。进一步搜索你得到的错误让我遇到了两个问题(numpy 和 scipy repos 各一个)。所以你可能想要做的是更新你的scipy 包(我使用的是 1.0.0 版)然后再试一次。对于 numpy,autograd 使用他们的 numpy 版本(import autograd.numpy as np)所以我猜这个问题不存在。
  • @ĐorđeRelić:感谢您确认此问题。我认为它应该在他们的下一次更新中修复。再次感谢。
  • 我将写一个答案来尝试更新您的scipy 包,看看它是否能解决这个问题。而且,通过稍微调整代码,我收到了来自minimize 函数的警告,指出“警告:由于精度损失,不一定会实现所需的错误。”所以因此我没有应该是“gmm.png”的输出。

标签: python autograd


【解决方案1】:

尝试将您的 scipy 包更新到较新的版本。我使用的版本是 1.0.0 并且示例有效。

但是,即使进行了更改,此示例也不起作用。它运行没有错误,但不会产生任何结果。我的猜测是 Hessian 和 Jacobian 近似是错误的,并且最小化算法不会收敛。如果尝试使用另一种最小化算法,它确实会收敛(缓慢但稳定)。应该代表输出的 repo 中的当前图像已过时,因为在最新版本的代码中,风车中的类数是 3 而不是 5。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 2012-07-04
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2023-01-22
    • 2020-03-29
    相关资源
    最近更新 更多