一个稍微复杂的梯度计算例子
多自变量的函数,求梯度
x = torch.randn(3, requires_grad=True) # x 中存了三个变量 x1,x2,x3 y = x + 2 z = y * y * 3 z = z.mean() # 求导 z.backward() print(x.grad) # dz/dx # 比较直接计算的结果 print(2*(x+2))
各自变量的梯度 可以乘上相应的权值
p = torch.tensor([0.4,0.5,0.2],dtype=torch.float32) z.backward(p) print(x.grad) # dz/dx # 比较直接计算的结果