Caffe学习笔记(二):Caffe前传与反传、损失函数、调优
在caffe框架中,前传/反传(forward and backward)是一个网络中最重要的计算过程;损失函数(loss)是学习的驱动,类似于视频编码中的率失真代价,是衡量学习的程度,或者说,学习的目的是找到一个网络权重的集合,使得损失函数最小;Solver是通过协调网络的前向推断计算和反向计算来对参数进行更新,从而达到减小loss的目的。
下面将对forward and backward、loss、solver分别进行介绍。
1、前传/反传(forward and backward)
如前所述,前传和反传是一个网络中的最重要的计算过程。
所谓前传就是:给定的输入计算输出,在前传过程中,caffe组合每一层的计算得到整个模型的计算“函数”;需要注意的是:此过程是一个自底向上的过程。
所谓反传就是:根据损失来计算梯度从而进行学习,在反传过程中,caffe通过自动求导并反向组合每一层的梯度来计算整个网络的梯度,需要注意的是该过程自顶向下进行。
在caffe中,Net::Forward()和Net::Backward()方法实现网络的前传和反传,而Layer::Forward()和Layer::Backward()计算每一层的前传和反传。