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

 

 

 

          

 

posted @ 2016-08-24 22:22  牧马人夏峥  阅读(506)  评论(0编辑  收藏  举报