反向传播
神经网络对模型的表达能力依赖于优化算法,优化是一个不断计算梯度并调整可学习参数的过程,Fluid中的优化算法可参考 优化器 。
在网络的训练过程中,梯度计算分为两个步骤:前向计算与 反向传播 。
- 前向计算会根据您搭建的网络结构,将输入单元的状态传递到输出单元。
- 反向传播借助 链式法则 ,计算两个或两个以上复合函数的导数,将输出单元的梯度反向传播回输入单元,根据计算出的梯度,调整网络的可学习参数。
详细实现过程可以参考阅读 反向传导算法 。
在Fluid中,我们并不推荐直接调用 fluid
中反向传播相关API,因为这是一个极底层的API,请考虑使用 优化器 中的相关API替代。当您使用优化相关API时,Fluid会自动为您计算复杂的反向传播过程。
如想自己实现,您也可以使用 append_backward 中的 callback
自 定义Operator的梯度计算形式。更多用法,请参考: