caffe框架自带的例子mnist里有一个lenet_solver.prototxt文件,这个文件是具体的训练网络的引入文件,定义了CNN网络架构之外的一些基础参数,如总的迭代次数、测试间隔、基础学习率、基础学习率的更新策略、训练平台(GPU或CPU)等。

  1. # The train/test net protocol buffer definition //对训练和测试网络的定义
  2. //网络的路径,可以使用绝对路径或者相对路径
  3. net: "D:/Software/Caffe/caffe-master/examples/mnist/lenet_train_test.prototxt"
  4. //test_iter参数定义训练流程中前向传播的总批次数
  5. # test_iter specifies how many forward passes the test should carry out.
  6. //在MNIST中,定义的是每批次100张图片,一共100个批次,覆盖了全部10000个测试图例
  7. # In the case of MNIST, we have test batch size 100 and 100 test iterations,
  8. # covering the full 10,000 testing images.
  9. /*
  10. test_iter是定义的测试图例分为多少批次,由于一次性执行所有的测试图例效率很低,所以把测试
  11. 图例分为几个批次来依次执行,每个批次包含的图例数量是在net网络的模型文件.prototxt中的
  12. batch_size变量定义的,test_iter*batch_size等于总的测试图集数量
  13. */
  14. test_iter: 100
  15. //测试间隔,训练没迭代500次后执行一次测试(测试是为了获得当前模型的训练精度)
  16. # Carry out testing every 500 training iterations.
  17. test_interval: 500
  18. /*
  19. 网络的学习率设置
  20. 1. base_lr:表示base learning rate,基础学习率,一般在网络模型中的每一层都会定义两个名称为
  21. “lr_mult”的学习率系数,这个学习率系数乘上基础学习率(base_lr*lr_mult)才是最终的学习率
  22. 2. momentum:冲量单元是梯度下降法中一种常用的加速技术,作用是有助于训练过程中逃离局部
  23. 最小值,使网络能够更快速的收敛,具体的值是经过反复的迭代调试获得的经验值
  24. 3. weight_decay:权值衰减的设置是为了防止训练出现过拟合,在损失函数中,weight_decay是放
  25. 在正则项(regularization)前面的一个系数,正则项一般指示模型的复杂度。weight_decay可以调节
  26. 模型复杂度对损失函数的影响,提高模型的泛化能力
  27. */
  28. # The base learning rate, momentum and the weight decay of the network.
  29. base_lr: 0.01
  30. momentum: 0.9
  31. weight_decay: 0.0005
  32. /*
  33. 学习率修改策略
  34. 以上设置的是初始学习率参数,在训练过程中,依据需要,可以不断调整学习率的参数,调整的策略是
  35. 通过lr_policy定义的
  36. lr_policy可以设置为下面这些值,相应的学习率的计算为:
  37. - fixed:   保持base_lr不变.
  38. - step:    如果设置为step,则还需要设置一个stepsize, 返回 base_lr * gamma ^ (floor(iter / stepsize)),其中iter表示当前的迭代次数
  39. - exp:   返回base_lr * gamma ^ iter, iter为当前迭代次数
  40. - inv:   如果设置为inv,还需要设置一个power, 返回base_lr * (1 + gamma * iter) ^ (- power)
  41. - multistep: 如果设置为multistep,则还需要设置一个stepvalue。这个参数和step很相似,step是均匀等间隔变化,而multistep则是根据stepvalue值变化
  42. - poly:    学习率进行多项式误差, 返回 base_lr (1 - iter/max_iter) ^ (power)
  43. - sigmoid: 学习率进行sigmod衰减,返回 base_lr ( 1/(1 + exp(-gamma * (iter - stepsize))))
  44. */
  45. # The learning rate policy
  46. lr_policy: "inv"
  47. gamma: 0.0001
  48. power: 0.75
  49. //每迭代100次显示一次执行结果
  50. # Display every 100 iterations
  51. display: 100
  52. //最大迭代次数
  53. # The maximum number of iterations
  54. max_iter: 10000
  55. //生成中间结果,记录迭代5000次之后结果,定义caffeModel文件生成路径
  56. # snapshot intermediate results
  57. snapshot: 5000
  58. snapshot_prefix: "D:/Software/Caffe/caffe-master/examples/mnist/lenet"
  59. //运行模式,CPU或者GPU
  60. # solver mode: CPU or GPU
  61. solver_mode: GPU

在每一次的迭代过程中,solver做了这几步工作:

1、调用forward算法来计算最终的输出值,以及对应的loss

2、调用backward算法来计算每层的梯度

3、根据选用的slover方法,利用梯度进行参数更新

4、记录并保存每次迭代的学习率、快照,以及对应的状态。

可以设定网络经过多少次迭代训练之后去评价当前的网络。

caffe中lenet_solver.prototxt配置文件注解的更多相关文章

  1. caffe中lenet_train_test.prototxt配置文件注解

    caffe框架下的lenet.prototxt定义了一个广义上的LeNet模型,对MNIST数据库进行训练实际使用的是lenet_train_test.prototxt模型. lenet_train_ ...

  2. 浅谈caffe中train_val.prototxt和deploy.prototxt文件的区别

    本文以CaffeNet为例: 1. train_val.prototxt  首先,train_val.prototxt文件是网络配置文件.该文件是在训练的时候用的. 2.deploy.prototxt ...

  3. [转]caffe中solver.prototxt参数说明

    https://www.cnblogs.com/denny402/p/5074049.html solver算是caffe的核心的核心,它协调着整个模型的运作.caffe程序运行必带的一个参数就是so ...

  4. Caffe中deploy.prototxt 和 train_val.prototxt 区别

    之前用deploy.prototxt 还原train_val.prototxt过程中,遇到了坑,所以打算总结一下 本人以熟悉的LeNet网络结构为例子 不同点主要在一前一后,相同点都在中间 train ...

  5. caffe中通过prototxt文件查看神经网络模型结构的方法

    在修改propotxt之前我们可以对之前的网络结构进行一个直观的认识: 可以使用http://ethereon.github.io/netscope/#/editor 这个网址. 将propotxt文 ...

  6. caffe 中solver.prototxt

    关于cifar-10和mnist的weight_decay和momentum也是相当的重要:就是出现一次把cifar-10的两个值直接用在mnist上,发现错误很大.

  7. caffe中LetNet-5卷积神经网络模型文件lenet.prototxt理解

    caffe在 .\examples\mnist文件夹下有一个 lenet.prototxt文件,这个文件定义了一个广义的LetNet-5模型,对这个模型文件逐段分解一下. name: "Le ...

  8. Windows下使用python绘制caffe中.prototxt网络结构数据可视化

    准备工具: 1. 已编译好的pycaffe 2. Anaconda(python2.7) 3. graphviz 4. pydot  1. graphviz安装 graphviz是贝尔实验室开发的一个 ...

  9. 配置caffe中出现的问题汇总

    1,运行下面代码时: sudo apt-get install libopencv 出错: E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系 原因: 源(source ...

随机推荐

  1. hdu2767 Proving Equivalences,有向图强联通,Kosaraju算法

    点击打开链接 有向图强联通,Kosaraju算法 缩点后分别入度和出度为0的点的个数 answer = max(a, b); scc_cnt = 1; answer = 0 #include<c ...

  2. Cocos Code IDE

    https://www.cnblogs.com/luorende/p/6464181.html http://www.cocoachina.com/bbs/read.php?tid-464164.ht ...

  3. ELF文件格式定义

    ELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西.以及都以什么样的格式去放这些东西.它自 ...

  4. 0x32 约数

    bzoj1053: [HAOI2007]反素数ant bzoj1257: [CQOI2007]余数之和sum Hankson的趣味题 暴力枚举..约数 #include<cstdio> # ...

  5. hdoj--2122--Ice_cream’s world III(克鲁斯卡尔)

    Ice_cream's world III Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  6. Spark的数据存储(十九)

    Spark本身是基于内存计算的架构,数据的存储也主要分为内存和磁盘两个路径.Spark本身则根据存储位置.是否可序列化和副本数目这几个要素将数据存储分为多种存储级别.此外还可选择使用Tachyon来管 ...

  7. .NET MVC Dropzone 上传图片

    在nuget控制台输入:Install-Package dropzone @{ Layout = null; } <!DOCTYPE html> <html> <head ...

  8. Java之NoSuchMethodError

    Java之NoSuchMethodError 最近生产环境出现的一个问题,NoSuchMethodError,之前遇到过,大概明白就是方法冲突.这里总结一下,以备学习之用. 错误代码如下: 2018- ...

  9. 阿里logo库

    http://www.iconfont.cn/home/index?spm=a313x.7781069.1998910419.2

  10. Pyhton学习——Day47

    # 转载:http://www.cnblogs.com/yuanchenqi/articles/6357507.html# 外键:一种约束条件,与主键对应# 主表:被绑定的表:字表# 外键约束:# - ...