caffe之solver.prototxt文件参数设置

caffe solver参数意义与设置

batchsize:每迭代一次,网络训练图片的数量,例如:若是你的batchsize=256,则你的网络每迭代一次,训练256张图片;则,若是你的总图片张数为1280000张,则要想将你全部的图片经过网络训练一次,则须要1280000/256=5000次迭代。html

epoch表示将全部图片在你的网络中训练一次所须要的迭代次数,如上面的例子:5000次;咱们称之为  一代。因此若是你想要你的网络训练100代时,则你的总的迭代次数为max_iteration=5000*100=500000次;网络

max_iteration:网络的最大迭代次数如上面的500000次;同理,若是max_iteration=450000,则该网络被训练450000/5000=90代。学习

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

test_interval:表示你的网络迭代多少次才进行一次测试,你能够设置为网络训练完一代,就进行一次测试,好比前面的一代为5000次迭代时,你就能够设置test_interval=5000;优化

base_lr:表示基础学习率,在参数梯度降低优化的过程当中,学习率会有所调整,而调整的策略就可经过lr_policy这个参数进行设置;spa

lr_policy学习率的调整策略:.net

  • - 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是均匀等间隔变化,而mult-
  •      step则是根据stepvalue值变化
  • - poly:    学习率进行多项式偏差, 返回 base_lr (1 - iter/max_iter) ^ (power)
  • - sigmoid:  学习率进行sigmod衰减,返回 base_lr ( 1/(1 + exp(-gamma * (iter - stepsize))))

momentum表示上一次梯度更新的权重;htm

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

 

总结solver文件个参数的意义

 

iteration: 数据进行一次前向-后向的训练 
batchsize:每次迭代训练图片的数量 
epoch:1个epoch就是将全部的训练图像所有经过网络训练一次 
例如:假若有1280000张图片,batchsize=256,则1个epoch须要1280000/256=5000次iteration 
它的max-iteration=450000,则共有450000/5000=90个epoch 
而lr何时衰减与stepsize有关,减小多少与gamma有关,即:若stepsize=500, base_lr=0.01, gamma=0.1,则当迭代到第一个500次时,lr第一次衰减,衰减后的lr=lr*gamma=0.01*0.1=0.001,之后重复该过程,因此 
stepsize是lr的衰减步长,gamma是lr的衰减系数。 图片

 

 也可参考一下博客:

http://blog.csdn.net/czp0322/article/details/52161759

http://www.cnblogs.com/Allen-rg/p/5795867.html

http://www.cnblogs.com/CarryPotMan/p/5343692.html

http://blog.csdn.net/qq_18515405/article/details/51821125

相关文章
相关标签/搜索