对Pytorch中backward()函数参数的理解
y.backward(v)
以y = w x为例,计算x关于y的梯度:
y对x的导数,包含了y中各个元素对x的导数,所以,计算时y中各个元素对x的偏导需要一个权重,因此,v需要和y同维度。
代码验证
import torch
x = torch.tensor([[[1.],[3.]]],requires_grad = True) #requires_grad打开梯度计算,必须是浮点数
W = torch.tensor([[[2.,4.],[3.,2.]]])
y = torch.bmm(W , x) #torch.bmm()函数,不支持两个元素的乘法,输入格式必须为[批处理数, 行, 列]
v = torch.tensor([[[1.],[3.]]]) #v与y形状一样
y.backward(v)
print(x.grad)