《智能系统与技术丛书 深度学习实践:基于Caffe的解析》—3.3.2Solver配置

举报
华章计算机 发表于 2019/06/02 16:12:33 2019/06/02
【摘要】 本书摘自《智能系统与技术丛书 深度学习实践:基于Caffe的解析》一文中的第3章,第3.3.2节,作者是薛云峰。

3.3.2 Solver配置

       Solver文件是针对构建好的网络参数模型进行学习训练的一个过程,这一过程可能会涉及优化策略、学习率调整策略、迭代次数等方面,除了训练网络构建之外,Solver是另一个我们平常称之为调参的文件,这一文件的调整将会直接影响网络收敛性及其收敛的速度。

       下面先来看一下如何编写一个典型的Caffe的训练Solver文件,这个solver.prototxt是经典的AlexNet模型的训练文件。示例代码如下:

net: "models/bvlc_alexnet/train_val.prototxt"

test_iter: 1000

test_interval: 1000

base_lr: 0.01

lr_policy: "step"

gamma: 0.1

stepsize: 100000

display: 20

max_iter: 450000

momentum: 0.9

weight_decay: 0.0005

snapshot: 10000

snapshot_prefix: "models/bvlc_alexnet/caffe_alexnet_train"

solver_mode: GPU

      以下是上述示例代码的参数说明。

      batchsize:每迭代一次,通过网络训练的图片数量,例如,假设batchsize=256,则表示网络每迭代一次,将训练256张图片;也就是说,如果总图片数量为12800000张,要想将所有的图片都通过网络训练一次,则需要12800000/256=50000次迭代。

      epoch:表示将所有图片在你的网络中训练一次所需要的迭代次数,例如上面提到的50000次;有些学者称之为一代,其实称为什么并不重要,我们只需要知道该参数是所有图片训练一次所需要的次数即可,其可以方便地针对不同次数的训练对比训练模型的性能,所以如果需要网络将每个样本训练100次,则总的迭代次数为max_iteration=50000*100=5000000次。

       max_iteration:网络的最大迭代次数,如上面的5000000次;同理,如果max_iteration=4500000,则该网络将被训练4500000/50000=90次。该参数对应于后面讲到的Caffe源码中Solve和step判断是否要调出迭代的一个指标。

       test_iter:表示测试的次数。比如,test阶段的batchsize=100,而你的测试数据为10000张图片,则测试次数为10000/100=100次,即test_iter=100。

       test_interval:表示网络迭代多少次才进行一次测试,可以设置为网络训练完一代,就进行一次测试,比如前面的一代为5000次迭代的情况,就可以将test_interval设置为5000。

       base_lr:表示基础学习率,在参数梯度下降优化的过程中,学习率会有所调整。

       lr_policy:表示学习率改变策略,也就是使用什么方式改变学习率,以及何时进行改变。

       weight_decay:表示权重衰减,用于防止过拟合。

       momentum:表示上一次梯度更新的权重。

       学习率调整参数及对应的学习率下降策略具体见表3-4。

表 3-4

image.png

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。