torch.autograd.backward
当进行如下操作时,''RuntimeError: grad can be implicitly created only for scalar outputs''
的错误。
当改为:
假设分别是大小为
的矩阵,且有
,即:

PyTorch的自动求导过程如下:


回到最开始的代码,有



根据(2)式,有:






所以根据(3)式有:






将式(13)~(18)加起来即得到b.grad
,同理可得到a.grad
。
其中c.backward(torch.ones_like(c))
中backward()
的参数是与大小相同且全为1的矩阵,其中矩阵每个位置的值【相对应】的是式(13)~(18)的系数。
即:

【相应的】如果c.backward()
的【参数】为任意与矩阵【形状一致】的矩阵都可,所得到的各元素梯度乘上对应位置的系数即可。