На самом деле, это то, что вы ищете:
Случай 1: когда z = 2 * x ** 3 + x
import torch
from torch.autograd import Variable
x = Variable(2*torch.ones(2, 2), requires_grad=True)
z = x*x*x*2+x
z.backward(torch.ones_like(z))
print(x.grad)
вывод:
tensor([[25., 25.],
[25., 25.]])
Случай 2: когда z = x * x
x = Variable(2*torch.ones(2, 2), requires_grad=True)
z = x*x
z.backward(torch.ones_like(z))
print(x.grad)
Выход:
tensor([[4., 4.],
[4., 4.]])
Случай 3: , когда z = x (ваш случай)
x = Variable(2*torch.ones(2, 2), requires_grad=True)
z = x
z.backward(torch.ones_like(z))
print(x.grad)
вывод:
tensor([[1., 1.],
[1., 1.]])
Чтобы узнать больше о том, как рассчитать градиент в pytorch, отметьте this .