caffe学习(三)solver.prototxt超参数详解

caffe学习(三)solver.prototxt超参数详解

实例:

train_net: "train_shufflenet.prototxt"
test_net: "test_shufflenet.prototxt"
test_iter: 200
test_initialization:false
test_interval: 800
base_lr: 0.001
display: 50
max_iter: 156250‬
lr_policy: "multistep"
stepvalue: 41500
stepvalue: 87250
gamma: 0.1
momentum: 0.9
weight_decay: 0.0001
solver_mode: GPU
random_seed: 831486
type: "Nesterov"

1、train_net:训练配置文件。
2、test_net:预测配置文件。
3、test_initialization:第一次是否进行预测。
4、test_iter:200 训练时测试的次数,遵循原则 test_iter * 预测的batch_size >= 预测图片数(即验证图片数)。
5、test_interval:800 即多少次进行一次预测,遵循原则 test_interval *训练batch_size >= 训练图片数。
例子(cifar-10):训练图片50000张,预测图片10000张,训练batch_size:64,预测batch_size:50,test_iter >= 10000/50 = 200; test_interval >= 50000/64 = 782, 即数据批次来执行,每次批次数量为50(预测batch_size),那么就要迭代200(test_iter)次才能将10000个数据全部执行完。而执行完一次全部的数据就称之为一个epoch。
6、display:50 这里表示 50次训练后打印一次训练结果。
7、max_iter:156250‬ 执行训练的最大迭代次数,设置太小,会导致不收敛,并且精确度很低;如果太大会出现振荡现象且浪费时间,一般是设定30-40epoch 或者遵循max_iter >= 50000(训练图片)/64(训练batchsize) * 200(test_iter)。
8、base_lr: 0.001 学习率,在参数梯度下降优化过程中,base_lr会进行调整,调整的策略跟lr_policy这个参数有关,这里一般是靠经验设定,一般有设定0.1、0.01、0.001。
8、lr_policy:“multistep” 学习率的计算方式。

  • fixed:保持base_lr的值不变.
  • step: 需要设定stepsize和gamma, 根据公式base_lr * gamma ^ (floor(iter / stepsize))。
  • exp: 需设定gamma,根据base_lr * gamma ^ iter,参数 gamma 的值应小于1。如果等于1的时学习策略变会为了 fixed。在 gamma = 0.1 的情况下,学习率每迭代一次后变为上一次迭代的0.1倍
  • inv:需设定gamma和power,根据base_lr * (1 + gamma * iter) ^ (- power)
  • multistep:需要设定stepvalue(可设定多个值)。这个方式和step很相似,step是等间隔变化,而multistep则是根据stepvalue值变化
  • poly: 需设定power 学习率进行多项式误差, 根据base_lr (1 - iter/max_iter) ^ (power)当 power = 1 时,学习率曲线为一条直线。当 power < 1 时,学习率曲线是凸形,且下降速率由慢到快。当 power > 1 时,学习率曲线是凹形,且下降速率由快到慢。
  • sigmoid:需设定gamma,学习率进行sigmod衰减,根据 base_lr ( 1/(1 + exp(-gamma * (iter - stepsize)))),当 gamma < 0 时,才能控制学习率曲线呈下降趋势,且 gamma 的值越小,学习率在两头的变化速率越慢,在中间区域变化速率越快。
    9、momentum:表示上一次梯度更新的权重。
    10、weight_decay:使用的目的是防止过拟合。
    11、snapshot :保存模型间隔。
    12、snapshot_prefix :保存模型的前缀。
    13、solver_mode :是否使用GPU。
    14、random_seed:随机种子起始数字,默认为-1参考系统时钟
    15、type :caffe有6种优化算法求解最优参数(SGD、NESTEROV、ADAGRAD、RMSPROP、ADADELTA、ADAM)。

以上就是对caffe solver.prototxt文件里的常见的参数,当然还有很多的参数没有提及。

你可能感兴趣的:(caffe学习(三)solver.prototxt超参数详解)