pytorch 中的向后渐变函数

backward, grad function in pytorch

我正在尝试在 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]]

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

请帮帮我..

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)

returns

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

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