Pytorch中的多个loss和的梯度回传
TODO
总 loss 由多个 loss 组成。如果只有一个 loss,那么直接 loss.backward()即可,不止一个 loss 时, backward()放在哪里?
目前的写法:
1 | |
补充
- 关于张量 tensor 中的 require_grad 属性: 如果一个张量它的 requires_grad=True,那么在反向传播计算梯度时调用 backward()方法就会计算这个张量的梯度。但是需要注意的是:计算完梯度之后,这个梯度并不一定会一直保存在属性 grad 中,只有对于 requires_grad=True 的叶子结点才会一直保存梯度,即将梯度一直保存在该叶子张量的 grad 属性中。而对于非叶子节点,即中间节点的张量,我们在计算完梯度之后为了更高效地利用内存,一般会将中间计算的梯度释放掉。
References
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Hongwei Zhao's Blog!



