1.
x = torch.ones(3, requires_grad=True)
y = x * 2
v = torch.tensor([1, 2, 0], dtype=torch.float)
y.backward(v, retain_graph=True)
a = x.grad
print(x.grad)
y[0].backward(retain_graph=True)
print(x.grad)
求梯度主要通过两个函数:
y.backward()
x.grad()
但是这里需要注意,y必须是一个标量,如果不是标量,就要通过一个向量V直接得到v和雅克比矩阵的乘积
x.grad是会不断叠加的,也就是说,第二次调用x.grad输出的结果是两次x.grad()结果相加得到的
x定义是需要强调, requires_grad=True