问题标签 [autograd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
17936 浏览

machine-learning - PyTorch 中的后向函数

我对 pytorch 的后向功能有一些疑问,我认为我没有得到正确的输出:

输出是

也许是2*a*a

但我认为输出应该是

2*a.原因d(x^2)/dx=2x

0 投票
2 回答
2379 浏览

python - 使用自动微分库计算任意张量的偏导数

(注意:这不是关于反向传播的问题。)我正在尝试在 GPU 上使用 PyTorch 张量代替 Numpy 数组来解决非线性 PDE。我想计算任意张量的偏导数,类似于中心有限差分numpy.gradient函数的作用。我有解决这个问题的其他方法,但是由于我已经在使用 PyTorch,我想知道是否可以使用 autograd 模块(或者,一般来说,任何其他自动微分模块)来执行此操作。

我创建了 numpy.gradient 函数的张量兼容版本——它运行得更快。但也许有一种更优雅的方式来做到这一点。我找不到任何其他来源来解决这个问题,无论是证明它是可能的还是不可能的;也许这反映了我对自分化算法的无知。

0 投票
1 回答
1451 浏览

python - 如何在 PyTorch 中获得导数的完整雅可比行列式?

让我们考虑一个简单的张量x,然后定义另一个依赖于x并具有多个维度的张量:y = (x, 2x, x^2)

我怎样才能拥有完整的渐变dy/dx = (1,2,x)

例如,让我们看一下代码:

这是我到目前为止没有成功尝试过的:

每次我只得到部分渐变或累积版本......

我知道我可以使用for第二个表达式来使用循环,例如

然而,当我处理高维张量时,这个for循环可能需要太多时间来计算。此外,必须有一种方法可以在不累积梯度的情况下执行完整的雅可比......

有没有人有解决方案?还是另一种选择?

0 投票
1 回答
119 浏览

python - 从哪里开始创建一个使用 PyTorch 在张量中保存所需更改的方法?

我有两个张量用于计算 Spearmans 等级相关性,我希望 PyTorch 能够自动调整这些张量中的值,以尽可能提高我的 Spearmans 等级相关性数。

我已经探索了 autograd,但我发现没有任何东西可以简单地解释它。

初始化张量: a=Var(torch.randn(20,1),requires_grad=True) psfm_s=Var(torch.randn(12,20),requires_grad=True)

在让 PyTorch 完成工作的同时,如何对这两个张量中的值进行不断调整的循环,以从我从这两个张量中制作的 2 个列表中获得最高的 spearmans 等级相关性?我只需要一个去哪里的指南。谢谢!

0 投票
1 回答
4880 浏览

pytorch - 如何在 PyTorch 中使用 autograd.gradcheck?

该文档不包含 gradcheck 的任何示例用例,它在哪里有用?

0 投票
1 回答
303 浏览

python - 使用 PyTorch 根据我从张量计算的数字调整张量矩阵值?

我有两个已初始化的张量(矩阵):

我正在从这两个矩阵中的数据创建两个列表,并且我正在使用 spearmanr 来获取这两个列表之间的相关值。我如何创建列表并不重要,但目标是调整矩阵内的值,使计算出的相关值尽可能接近 1。

如果我要手动解决这个问题,我会每次将矩阵中的值调整 0.01(或一些小数字)并重新计算列表和相关分数。如果新的相关值高于前一个,我会保存 2 个矩阵并调整不同的值,直到我得到 2 个矩阵给我可能的最高相关分数。

PyTorch 是否能够自动执行此操作?我知道 PyTorch 可以根据方程式进行调整,但我想要调整矩阵值的方式不是针对方程式,而是针对我计算的相关值。非常感谢您对此的任何指导!

0 投票
1 回答
312 浏览

pytorch - 遇到 RuntimeError:梯度计算所需的变量之一已被就地操作修改

调用 .backward() 时出现以下错误:

遇到 RuntimeError:梯度计算所需的变量之一已被就地操作修改

这是代码:

我试过 .clone()、torch.add() 等等。

请帮忙!

0 投票
1 回答
144 浏览

python - pytorch autograd 阻止脚本终止

每当我调用 autogradsbackward我的脚本永远不会终止。backward本身并不是阻塞的,它之后的所有行仍然执行,脚本只是不会终止。后台似乎有某种工作线程挂起,但我找不到任何有关它的信息。

我最初在训练神经网络时遇到了这个问题,但是我最终找到了一个具有相同行为的非常简短的示例:

当我删除该backward行时,脚本按预期完成。否则我会在任务管理器中看到一个进程调用python,如果我手动终止它,脚本执行也会终止。

conda create --name grad_test pytorch -c pytorch我在最新的稳定版本(python 3.7、pytorch 1.2.0)中使用 conda () 在 Windows 7 上安装了 pytorch 。

0 投票
1 回答
387 浏览

python - 在 PyTorch 中计算输出逐像素梯度范数

我正在寻找一种有效的方法来计算每个样本定义的维度 (bxcxhxw) 的 \hat{x}:

情商

其中 x 是由具有参数 \theta 的模型生成的相同维度的输出,并且

i,j:索引二维输出特征图的高度和宽度

k:索引通道维度

l:索引参数。

我如何使用 x.backward() 完成此操作?有没有一种有效的方法来做到这一点?

如果我做了 x.backward(torch.ones_like(x)),我将计算上述等式中的梯度之和,而不是它们的绝对值之和。

执行此操作的蛮力方法是遍历输出映射中的每个像素并计算 .backward()。但是,那将是非常昂贵的。有没有避免循环的有效方法?

0 投票
1 回答
31 浏览

pytorch - 在 pytorch 中复制 https://www.d2l.ai/chapter_linear-networks/linear-regression-scratch.html

我正在尝试在 pytorch 中复制代码。但是我在使用 autograd 函数时遇到了一些问题。我有以下运行时错误。

RuntimeError:尝试第二次向后遍历图形

代码如下:

有人可以解释一下 autograd 在 python 中是如何工作的吗?如果有人可以向我推荐一个学习 pytorch 的好资源,那就太好了。