对于传统的求偏导呢,是根据输出y对输出x做复杂的数值微分得来的。
反向传播算法则是在计算图中基于链式法则将每一层的偏导结果连接起来。对于每一层的偏导则可以通过数值微分求解,特殊一点的,对于加法节点,可以做微分不变处理,对于乘法节点,可以做翻转处理来简化数值微分的计算量。
关于pytorch中autugrad反向传播的机理,我推荐下网上某个博主写的,详细易懂https://blog.csdn.net/wangweiwells/article/details/101174330
关于反向传播其余的一些知识点,可参考这篇博主写的:pytorch 自动求导机制和计算图
小结:
1、只有变量的required_grad=True的时候反向传播的时候才会计算出梯度。但不一定会传给这个变量。
2、这时候要看是否为叶结点,叶张量才会收到这个梯度,非叶结点就算required_grad=True,也不会收到这个梯度值。