caffe学习系列(2):训练和测试自己的图片
参考:http://www.cnblogs.com/denny402/p/5083300.html
上述主要介绍的是从自己的原始图片转为lmdb数据,再到训练、测试的整个流程(另外可参考薛开宇的笔记)。
用的是自带的caffenet(看了下结构,典型的CNN),因为没有GPU,整个过程实在是太慢了,因此我将其改为二分类,只留3,4两类训练测试
训练时两类各80张,共160张;测试时两类各20张,共40张。
首先看下solver.prototxt配置文件中各参数的含义
- net: "examples/mnist/lenet_train_test.prototxt" //设置网络模型
- test_iter: 100 //测试批次,与batch_size结合来看
- test_interval: 500 //每训练500次测试一次
- base_lr: 0.01 //基出学习率
- momentum: 0.9 //上一次梯度更新权重
- type: SGD//优化算法
- weight_decay: 0.0005//权重衰减,防止过拟合
- lr_policy: "inv"//学习率的变化方式
- gamma: 0.0001//学习率变化的比率
- power: 0.75 //指数
- display: 20 //每训练20次显示一次
- max_iter: 1000 //最大迭代次数
- snapshot: 1000 //每迭代将训练的model和solver状态进行保存
- snapshot_prefix: "examples/mnist/lenet"
- 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左右。。。