您的位置:首页 > Web前端

Caffe的solver参数介绍

2017-03-01 15:44 316 查看
文章作者:Tyan

博客:noahsnail.com | CSDN | 简书

1. Parameters

solver.prototxt
文件是用来告诉caffe如何训练网络的。
solver.prototxt
的各个参数的解释如下:

base_lr

这个参数是用来表示网络的初始学习率的。这个值是一个浮点型实数。

lr_policy

这个参数是用来表示学习率随着时间是如何变化的。值是字符串,需要加
""
。学习率变化的可选参数有:

“step”——需要设置
stepsize
。根据
gamma
参数和
stepsize
参数来降低学习率,
base_lr * gamma ^ (floor(iter / stepsize))
iter
是当前迭代次数。学习率每迭代
stepsize
次变化一次。

“multistep”——与
step
类似,需要设置
stepvalue
,学习率根据
stepvalue
进行变化。

“fixed”——学习率
base_lr
保持不变。

“inv”——学习率变化公式为
base_lr * (1 + gamma * iter) ^ (- power)


“exp”——学习率变化公式为
base_lr * gamma ^ iter}


“poly”——学习率以多项式形式衰减,到最大迭代次数时降为0。学习率变化公式为
base_lr * (1 - iter/max_iter) ^ (power)


“sigmoid”——学习率以S型曲线形式衰减,学习率变化公式为
base_lr * (1 / (1 + exp(-gamma * (iter - stepsize))))


gamma

这个参数表示学习率每次的变化程度,值为实数。

stepsize

这个参数表示什么时候应该进行训练的下一过程,值为正整数。主要用在
lr_policy
step
的情况。

stepvalue

这个参数表示什么时候应该进行训练的下一过程,值为正整数。主要用在
lr_policy
multistep
的情况。

max_iter

这个参数表示训练神经网络迭代的最大次数,值为正整数。

momentum

这个参数表示在新的计算中要保留的前面的权重数量,值为真分数,通常设为0.9。

weight_decay

这个参数表示对较大权重的惩罚(正则化)因子。值为真分数。

This parameter indicates the factor of (regularization) penalization of large weights. This value is a often a real fraction.

solver_mode

这个参数用来表示求解神经网络的模式——值为CPU or GPU。

snapshot

这个参数用来表示每迭代多少次就应该保存snapshot的
model
solverstate
,值为正整数。

snapshot_prefix:

这个参数用来表示保存snapshot时
model
solverstate
的前缀,值为带引号的字符串。

net:

这个参数表示训练网络所在的位置,值为带引号的字符串。

test_iter

这个参数表示

这个参数表示每个test_interval进行多少次test迭代,值为正整数。

test_interval

这个参数表示什么时候进行数据的测试,值为正整数。

display

这个参数用来表示什么时候将输出结果打印到屏幕上,值为正整数,表示迭代次数。

type

这个参数表示训练神经网络采用的反向传播算法,值为带引号的字符串。可选的值有:

Stochastic Gradient Descent “SGD”——随机梯度下降,默认值。

AdaDelta “AdaDelta”——一种”鲁棒的学习率方法“,是基于梯度的优化方法。

Adaptive Gradient “AdaGrad”——自适应梯度方法。

Adam “Adam”——一种基于梯度的优化方法。

Nesterov’s Accelerated Gradient “Nesterov”——Nesterov的加速梯度法,作为凸优化中最理想的方法,其收敛速度非常快。

RMSprop “RMSProp”——一种基于梯度的优化方法。

2. Demo

lr_policy

# lr_policy为multisetp
base_lr: 0.01
momentum: 0.9
lr_policy: "multistep"
gamma: 0.9
stepvalue: 1000
stepvalue: 2000
stepvalue: 3000
stepvalue: 4000
stepvalue: 5000

# lr_policy为step
base_lr: 0.01
momentum: 0.9
lr_policy: "step"
gamma: 0.9
stepsize: 1000


solver.prototxt

net: "models/bvlc_alexnet/train_val.prototxt"
# 每次测试时进行1000次迭代
test_iter: 1000
# 每进行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


参考资料

http://www.cnblogs.com/denny402/p/5074049.html

https://github.com/BVLC/caffe/wiki/Solver-Prototxt

http://stackoverflow.com/questions/30033096/what-is-lr-policy-in-caffe
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: