Caffe中Solver.prototxt解析

Posted Dream_yz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Caffe中Solver.prototxt解析相关的知识,希望对你有一定的参考价值。

Caffe中Solver.prototxt解析

Solver流程

  1. 设计好需要优化的对象,以及用于学习的训练网络和用于评估的测试网络。(通过调用另一个配置文件prototxt来进行);
  2. 通过forward和backward迭代的进行优化来更新参数;
  3. 定期的评价测试网络(可设定多少次训练后,在进行一次测试);
  4. 在优化过程中显示模型和solver的状态。

Solver工作

在每一次的迭代过程中,Solver做了如下工作:

  1. 调用forward算法来计算最终的输出值,以及对应的loss;
  2. 调用backward算法来计算每层的梯度;
  3. 根据选用的solver方法,利用梯度进行参数更新;
  4. 记录并保存每次迭代的学习率、快照,以及对应的状态;

Solver.prototxt文件

test_iter: 100
test_interval: 1000
base_lr: 0.001
display: 200
max_iter: 10000
lr_policy: "step"
gamma: 0.1
momentum: 0.9
weight_decay: 0.0001
stepsize: 1000
snapshot: 5000
snapshot_prefix: "snapshot"
solver_mode: GPU
net: "train_val.prototxt"
solver_type: SGD

Solver.prototxt参数

  1. net:用于训练/预测的网络描述文件
  2. test_iter:预测阶段迭代次数(与test_batch相乘后要大于测试样本集)
  3. test_interval:训练时没迭代多少次,进行一次预测(与batchSize相乘大于训练集)
  4. basr_lr:网络基础学习速率
  5. momentum:网络基础冲量,学习的参数,一般不修改该值
  6. weight_decay:网络基础衰减量
  7. lr_policy:学习率变化
  8. gamma:学习率变化比率。一般不修改该值
  9. power:学习速率的衰减策略
  10. stepsize:没多少次学习率递减
  11. display:经过多少次迭代后显示一次
  12. max_iter:最大迭代次数
  13. snapshot:多少次打印一次快照
  14. snapshot_prefix:快照前缀
  15. solver_mode:是否使用GPU
  16. solver_type:优化算法的选择,一共有六种可选:SGD、AdaDelta、AdaGrad、Adam、Nesterov和RMSProp。默认为SGD。

参考链接:https://blog.csdn.net/a1809032425/article/details/81158470

以上是关于Caffe中Solver.prototxt解析的主要内容,如果未能解决你的问题,请参考以下文章

Caffe详解Caffe的lenet_solver.prototxt

Caffe初试solver及其设置

用Python学习Caffe5. 生成solver文件

pycaffe使用.solverstate文件继续训练

caffe在solverstate的基础上继续训练模型

caffe的python接口学习生成solver文件