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左右。。。