4

我正在尝试在 pytorch 中实现向后的 grad 函数。

但是,我不知道为什么会返回这个值。

这是我的代码。

x = Variable(torch.FloatTensor([[1,2],[3,4]]), requires_grad=True)
y = x + 2
z = y * y

gradient = torch.ones(2, 2)
z.backward(gradient)
print(x.grad)

我认为结果值应该是 [[6,8],[10,12]]

因为 dz/dx= 2*(x+2) 和 x=1,2,3,4

但返回值为 [[7,9],[11,13]]

为什么会这样。我想知道梯度,grad函数是怎么做的。

请帮帮我..

4

1 回答 1

2

pytorch v0.12.1 上的以下代码

import torch
from torch.autograd import Variable
x = Variable(torch.FloatTensor([[1,2],[3,4]]), requires_grad=True)
y = x + 2
z = y * y
gradient = torch.ones(2, 2)
z.backward(gradient)
print(x.grad)

返回

Variable containing:
  6   8
 10  12
[torch.FloatTensor of size 2x2]

更新您的 pytorch 安装。解释了 autograd 的工作原理,它处理 pytorch 的梯度计算。

于 2017-06-01T11:12:38.017 回答