Caffe学习(6)——solver及其配置

在前面的文章Caffe学习(1)中,我们已经介绍了solver的具体流程。它的主要作用是交替调用forward和backward算法来更新参数,来最小化loss,实际上就是一种迭代的优化算法。

下面介绍caffe中求解最有参数的优化算法。

  • Stochastic Gradient Descent(type:“SGD”)
  • AdaDelta(type:"AdaDelta")
  • Adaptive Gradient  (type: "AdaGrad")
  • Adam (type:"Adam")
  • Nesterov's Accelerated Gradient (type:"Nesterov")
  • RMSprop (type:"RMSProp")

Nesterov's Accelerated Gradient和AdaDelta是SGD(即随机梯度下降法)的改进,Nesterov着重解决目标函数图像崎岖问题,AdaDelta主要解决学习率更新的问题;而Adam是这两种方法的综合。

优化算法的选择通过solver配置文件中的type进行设置。


下面通过一个例子进行介绍:

net: "examples/mnist/lenet_train_test.prototxt"
test_iter: 100
test_interval: 500
base_lr: 0.01
momentum: 0.9
type: SGD
weight_decay: 0.0005
lr_policy: "inv"
gamma: 0.0001
power: 0.75
display: 100
max_iter: 20000
snapshot: 5000
snapshot_prefix: "examples/mnist/lenet"
solver_mode: CPU



net——设置深度网络模型。每一个模型就是一个net,需要在专门的配置文件对net中进行配置,每个net有许多的layer组成。需要注意的是,文件路径需要从caffe的根目录开始,其他所有配置的路径都是如此。也可以使用train_net和test_net对训练模型和测试模型分别设定;

test_iter——执行完一次的全部数据,称之为一个epoch;

test_interval——测试间隔;没训练500次,进行一次测试。


base_lr: 0.01
lr_policy: "inv"
gamma: 0.0001
power: 0.75

——用于学习率的设置。只要是梯度下降法来求解优化,都会有一个学习率,也就是步长。base_lr用来设置基础学习率,在迭代的过程中,可以对基础学习率进行调整,就是调整策略,由lr_policy来设置。

lr_policy可选参数:

  • fixed:保持base_lr不变;
  • step:如果设置step,还需另外设置stepsize,返回base_lr*gamma^(floor(iter/stepsize)),其中iter表示迭代次数;
  • exp: 返回base_lr*gamma^iter;
  • inv:  如果设置inv,还需设置一个power,返回base_lr*(1+gamma*iter)^(-power)
  • multistep:  如果设置为multistep,则还需设置一个stepvalue;这个参数相当于step,step均匀、等间隔地变化,而multistep根据stepvalue值变化;
  • poly: 学习率进行多项式误差,返回base_lr(1-iter/max_iter)^(power)
  • sigmoid: 学习率进行sigmoid衰减,返回base_lr(1/(1+exp(-gamma*(step-stepsize))))

weight_decay——权重衰减项,防止过拟合的一个参数

display——每训练多少次,在屏幕上显示一次;如果值为0,则不显示

max_iter——最大迭代次数;这个数不能设置太小,否则会导致没有收敛,精确度会很低,也不能设置太大,否则会导致震荡,浪费时间。

snapshot——快照,在训练多少次之后,将训练出来的model和solver进行保存,默认为0时不保存;

snapshot_prefix——设置保存路径

snapshot_diff——是否保存梯度值,默认为false,不保存;

snapshot_format——保存类型:HDF5和BINARYPROTO,默认为后者;

solver_mode——设置运行模式,CPU/GPU

这些参数都是可选参数,都有默认值,如果默认值不符合要求,需要自行设置。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值