反向传播

神经网络对模型的表达能力依赖于优化算法,优化是一个不断计算梯度并调整可学习参数的过程,Fluid中的优化算法可参考 优化器

在网络的训练过程中,梯度计算分为两个步骤:前向计算与 反向传播

  • 前向计算会根据您搭建的网络结构,将输入单元的状态传递到输出单元。

  • 反向传播借助 链式法则 ,计算两个或两个以上复合函数的导数,将输出单元的梯度反向传播回输入单元,根据计算出的梯度,调整网络的可学习参数。

详细实现过程可以参考阅读 反向传导算法

在Fluid中,我们并不推荐直接调用 fluid 中反向传播相关API,因为这是一个极底层的API,请考虑使用 优化器 中的相关API替代。当您使用优化相关API时,Fluid会自动为您计算复杂的反向传播过程。

如想自己实现,您也可以使用 cn_api_fluid_backward_append_backward 中的 callback 自 定义Operator的梯度计算形式。更多用法,请参考:

  • cn_api_fluid_backward_append_backward