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