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 的梯度计算。
我正在尝试在 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 的梯度计算。