pytorch中的后向,grad函数

时间:2017-05-30 13:44:36

标签: variables 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]]

为什么会发生这种情况..我想知道渐变,渐变功能是如何做的。

请帮帮我..

1 个答案:

答案 0 :(得分: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安装。 This解释了autograd的工作,它处理了pytorch的梯度计算。