Caffe tutorial 之 前向与反向传播

本文参考Forward and Backward

前向与反向传播

前向与后向传播是网络中重要的计算部分。


接下来以简单的逻辑回归分类器为例介绍。

前向传播用于计算推理过程中给定输入的输出。在前向传播中,Caffe将每层的计算进行组合从而得到模型所代表的“函数”。此过程由底向上进行。


数据x经过全连接层(内积层)生成 g(x) ,之后通过softmax层产生 h(g(x)) ,从而给出softmax损失 fW(x)

反向过称用于计算给定损失的梯度。在反向传播中,Caffe将每层的梯度反向组合以自动计算整个模型的梯度。此即反向传播,此过程由顶向下进行。


反向过程起始于损失值并且计算输出 fWh 。模型中剩余部分的梯度将会根据链式法则逐层计算。含有参数的层,如 INNER_PRODUCT层,在反向传播中根据其参数计算梯度 fWWip

这些计算会根据模型的计算立即执行: Caffe会自动执行前向及后向传播。

  • Net::Forward()和 Net::Backward()方法计算前向、后向传播,而Layer::Forward()和Layer::Backward()则是计算每一步的前向与后向传播。
  • 每层含有forward_{cpu,gpu}() 和backward_{cpu,gpu}()根据计算模式来计算其每一步的传播过程。用户可以根据实际情况,只实现层的CPU或GPU模式。

Solver第一次进行前向传播产生输出和损失,之后进行反向传播算得模型梯度,之后根据梯度更新模型参数以最小化损失。通过将Solver、Net和Layer的分离,从而使Caffe模块化,易于开发。

Caffe中不同类型的层的前向和反向传播的细节,请参见layer catalogue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值