我正在尝试在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]]
为什么会发生这种情况..我想知道渐变,渐变功能是如何做的。
请帮帮我..
答案 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的梯度计算。