参考:http://www.cnblogs.com/denny402/p/5083300.html

          上述主要介绍的是从自己的原始图片转为lmdb数据,再到训练、测试的整个流程(另外可参考薛开宇的笔记)。

          用的是自带的caffenet(看了下结构,典型的CNN),因为没有GPU,整个过程实在是太慢了,因此我将其改为二分类,只留3,4两类训练测试

          训练时两类各80张,共160张;测试时两类各20张,共40张。

          首先看下solver.prototxt配置文件中各参数的含义

  1. net: "examples/mnist/lenet_train_test.prototxt" //设置网络模型
  2. test_iter: 100 //测试批次,与batch_size结合来看
  3. test_interval: 500 //每训练500次测试一次
  4. base_lr: 0.01 //基出学习率
  5. momentum: 0.9 //上一次梯度更新权重
  6. type: SGD//优化算法
  7. weight_decay: 0.0005//权重衰减,防止过拟合
  8. lr_policy: "inv"//学习率的变化方式
  9. gamma: 0.0001//学习率变化的比率
  10. power: 0.75 //指数
  11. display: 20 //每训练20次显示一次
  12. max_iter: 1000 //最大迭代次数
  13. snapshot: 1000 //每迭代将训练的model和solver状态进行保存
  14. snapshot_prefix: "examples/mnist/lenet"
  15. solver_mode: CPU

       还需修改train_val.proto中的data layer(train,test)。因为是二分类,因此需要将train_val.proto中的InnerProduct层

(全连接层,即输出层)的输出改为2。

        第一次训练时,默认输出1000个类别忘了改,max_iter设为100,没多久就跑出来了,但跑出来的准确率为0。

第二次改完后,max_iter增加到1000,电脑几乎卡顿,等会看实验结果。

      21:29,目前迭代了40次,准确率还是0,loss稍微降了点(估计得跑一夜了。。。)

      22:15,目前迭代了60次,准确率为0,loss由开如的3点多降到了2.7左右。。。 

 

 

 

          

 

版权声明:本文为573177885qq原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/573177885qq/p/5804863.html