您的位置:首页 > Web前端

深度学习21天实战Caffe学习笔记--笔记5--caffe中前向传播、反向传播及最优化求解过程

2017-03-07 22:29 344 查看
1. 前向传播

(1)前向传播时,由数据读取层获取数据,经过逐层处理,带最后一层(可能是损失层或特征层)得到输出。

(2)网络路径实际上是一个有向无环图(Directed Acycline Graph),DAG。

(3)DAG构造过程。从.prototxt文件读取网络结构,并获得NetParameter对象的初始化值,使用Init()函数实现初始化。Init()完成网络初始化和层初始化的操作。

(4)Net Forward的实现。对于每个Layer,调用Forward()函数,得到每层的loss,逐层计算即就是前向传播的过程。

2. 反向传播

(1)在前向传播阶段,网络依次计算每一层的输出。利用损失函数将网络最后一层的输出与目标值比较,得到损失值,将损失通过反向传播逐层传递直到第一层,反向传播结束之后更新所有层的连接权值。

3. Caffe最优化求解

    求解器具有如下特性:

(1)记录优化过程,创建用于学习的训练网络和用于评估学习效果的测试网络。

(2)调用前向传播函数计算输出和损失,调用反向传播函数计算梯度值,根据求解器的方法将梯度转化为权值增量,依据学习率、历史权值和所用求解方法等信息更新求解器状态。

(3)周期性评测网络。在优化过程中为模型、求解器的状态记录快照。

Tips:

1. caffe中默认使用系统时钟生成随机数种子。这意味着得到两个相同的初始化是非常困难的。

2. caffe在训练过程中会保存有snapshot文件,当需要在某个状态下继续训练时可以使用该文件。只需要在train.sh中修改一下设置,将-weight=$.caffemodel修改为-snapshot=$.solverstate
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: