本文主要是介绍caffe中solver.prototx 中的参数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
(一)例子一:lenet
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
1、test_iter:test_layer中的batch_size*test_iter=test数据的总数,执行完一次全部数据,称之为一个epoch
2、test_interval:每训练500次执行一次测试。test_interval*train_layer中的batch_size=train数据的总数的整数倍。
3、learning rate:学习率设置
base_lr: 0.01lr_policy: "inv"
gamma: 0.0001
power: 0.75
其中学习率的方案有以下几种:
lr_policy可以设置为下面这些值,相应的学习率的计算为:
- - fixed: 保持base_lr不变.
- - step: 如果设置为step,则还需要设置一个stepsize, 返回 base_lr * gamma ^ (floor(iter / stepsize)),其中iter表示当前的迭代次数
- - exp: 返回base_lr * gamma ^ iter, 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: 学习率进行sigmod衰减,返回 base_lr ( 1/(1 + exp(-gamma * (iter - stepsize))))
4、动量参数:momentum :0.9
5、display: 100 每训练100次,在屏幕上显示一次
6、max_iter: 20000
7、snapshot: 5000 每间隔5000次训练保存一次模型和训练断点。
(二)例子二:本例子中训练数据为2700张,测试数据为1638张test/train layer的batch_size都是1,一个epoch对应训练2700轮
test_iter: 1638 训练数据总数=1638(test_iter)*1(batch_size) test_interval: 5400 相当于训练数据每张滚了两轮,即训练过程经过了2个epoch,测试数据测试一个epoch。 base_lr:1e-6momentum: 0.9weight_decay: 0.0005lr_policy: "step"gamma: 0.1stepsize: 1080000display: 2700 每个epoch显示一次结果 max_iter: 2160000 最大迭代次数对应80epoch snapshot: 54000 训练过程经过20epoch就保存一次快照snapshot_prefix: "./model/network"solver_mode: GPUdevice_id: 0
(三)总结
step1:通过train_data test_data和batchsize计算epoch
step2:计算test iter
step3:
test_interval=2 epoch
display=1 epochsnapshot=10/20epochmax_iter=800epochstep_size=max_iter的一半
这篇关于caffe中solver.prototx 中的参数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!