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()
的【参数】为任意与矩阵【形状一致】的矩阵都可,所得到的各元素梯度乘上对应位置的系数即可。