caffe训练神经网络

fine-tuning

一、需要的文件

  • 训练数据、测试数据
  • 预训练好的模型参数
  • 参考模型的train_val.prototxt文件
  • solver.prototxt文件

二、需要做的准备

  • 生成训练集和测试集的lmdb数据文件
  • 生成训练集和测试集的均值文件
    **三、需要修改的地方
  • solver.prototxt文件:
1 net:"train_val.prototxt"#此处要改为自己的路径
2 test_iter:7
#这个参数和train_val.prototxt文件中test数据的batchsize、testset相关,
#即:size(testset) >= test_iter * test数据的batchsize(进行微调时这个值要减小)
3 test_interval:30
#原则上讲每进行一次测试要完成一个epoch的训练,
#所以size(trainset) <= test_interval *  train数据的batchsize
4 base_Lr:0.001#进行微调时这个值要减小
5 lr_policy:"step"
6 gamma:0.1
7 stepsize:10000#进行微调时这个值要减小
8 display:20
9 max_iter:45000#进行微调时这个值要减小
10 momentum:0.9
11 weight_decay:0.0005
12 snapshot:10000
13 snapshot_prefix:"caffe_alexnet_train"#这个要给为自己的路径
14 solver_mode:GPU
  • train_val.prototxt文件
    下面只贴需要修改的部分

数据层_训练集

1 name:"ALexNet"
2 layer {
3   name:"data"
4   type:"Data"
5   top:"data"
6   top:"Label"
7   include {
8     phase:TRAIN
9  }
10   transform_param {
11     mirror:true
12     crop_size:227
13     mean_file:"这里为自己的均值文件路径"
     }
15   data_param {
16      source:"这里为自己的训练数据路径"
18      batch_size:50#这里要改为合适的值
19      backend:LMDB
20   }
21}

数据层_测试集

1 name:"ALexNet"
2 layer {
3   name:"data"
4   type:"Data"
5   top:"data"
6   top:"Label"
7   include {
8     phase:TEST
9  }
10   transform_param {
11     mirror:true
12     crop_size:227
13     mean_file:"这里为自己的均值文件路径"
     }
15   data_param {
16      source:"这里为自己的训练数据路径"
18      batch_size:20#这里要改为合适的值
19      backend:LMDB
20   }
21}

最后全连接层

343 layer {
344   name:"fc8-ft"#为了避免将预训练的参数赋值给该层,需要将要训练的fc8改名
345   type:"InnerProduct"
346   bottom:"fc7"
347   top:"fc8-ft"#所有fc8都要改
348   param{
349     1r_mult:10#学习率提高10倍
350     decay_nult:1
351  }
352   param{
353     1r_mult:20#学习率提高10倍
354     decay_nult:0
355  }
356   inner_product_paran {
357     num_output:4#此处改为自己的输出类别数
358     weight_filler {
359       type:"gaussian"
360       std:0.01
362     bias_filler {
563       type:"constant"
364       value:0
365    }
366  }
567}

准确率层和损失层

368 layer {
369   name:"accuracy"
370   type:"Accuracy"
371   bottom:"fc8-ft"#所有的fc都要改
372   bottom:"Label"
373   top:"accuracy"
374   include {
575     phase:TEST
376  }
377}
378 layer {
379   name:"loss"
380   type:"SoftmaxwithLoss"
381   bottom:"fc8-ft"#所有的fc都要改
382   bottom:"LabeL"
383   top:"Loss"
384}

四、开始训练

caffe train -solver PATH/solver.prototxt -weights PATH/*.caffemodel

训练的过程和微调的过程一样,只是不需要导入预训练好的参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值