Caffe学习笔记12:solver.prototxt各参数意义与设置

caffe solver.prototxt参数意义与设置

  1. batchsize:每迭代一次,网络训练图片的数量,例如:如果你的batchsize=256,则你的网络每迭代一次,训练256张图片;则,如果你的总图片张数为1280000张,则要想将你所有的图片通过网络训练一次,则需要1280000/256=5000次迭代。

  2. epoch:表示将所有图片在你的网络中训练一次所需要的迭代次数,如上面的例子:5000次;我们称之为 一代。所以如果你想要你的网络训练100代时,则你的总的迭代次数为max_iteration=5000*100=500000次;

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

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

  5. test_interval:表示你的网络迭代多少次才进行一次测试,你可以设置为网络训练完一代,就进行一次测试,比如前面的一代为5000次迭代时,你就可以设置test_interval=5000;

  6. base_lr:表示基础学习率,在参数梯度下降优化的过程中,学习率会有所调整,而调整的策略就可通过lr_policy这个参数进行设置,若lr_policy设置为step,若stepsize=5000, base_lr=0.01, gamma=0.1,则当迭代到第一个5000次时,lr第一次衰减,衰减后的lr=lrgamma=0.010.1=0.001,以后重复该过程,所以 stepsize是lr的衰减步长,gamma是lr的衰减系数;

  7. stepsize不能太小,如果太小会导致学习率再后来越来越小,达不到充分收敛的效果stepsize不能太小,如果太小会导致学习率再后来越来越小,达不到充分收敛的效果

  8. 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))))
  1. momentum:0.9,动量,不建议调整,表示上一次梯度更新的权重;

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

  3. 训练样本
    总共:121368个
    batch_szie:256
    将所有样本处理完一次(称为一代,即epoch)需要:121368/256=475 次迭代才能完成
    所以这里将test_interval设置为475,即处理完一次所有的训练数据后,才去进行测试。所以这个数要大于等于475.
    如果想训练100代,则最大迭代次数为47500;

  4. 测试样本
    同理,如果有1000个测试样本,batch_size为25,那么需要40次才能完整的测试一次。 所以test_iter为40;这个数要大于等于40.

  5. 学习率
    学习率变化规律我们设置为随着迭代次数的增加,慢慢变低。总共迭代47500次,我们将变化5次,所以stepsize设置为47500/5=9500,即每迭代9500次,我们就降低一次学习率。

  6. type
    往往loss function 是非凸的,没有解析解,我们需要通过优化方法来求解
    caffe 提供了六种算法来求解最优参数,在solver配置文件中,通过设置type类型来选择
    Stochastic Gradient Descent(type:SGD) #随机梯度下降
    AdaDelta(type:AdaDelta)
    Adaptive Gradient(type: Adaptive)
    Adam(type:Adam)
    Nesterov’s Accelerated Gradient(type:Nesterov)
    RMSprop(type:RMSprop)

  7. display: 100 ,每训练100次,在屏幕上先是一次,如果设置为0,则不显示;

  8. snapshot: 1000 ,快照,将训练出来的model和solver进行保存,snapshot 用于设置训练多少次后进行保存;

  9. snapshot_prefix: “examples/mnist/lenet” :保存路径

  10. solver_mode: GPU ,是否使用GPU

猜你喜欢

转载自blog.csdn.net/weixin_41774576/article/details/82802155
今日推荐