caffe学习备忘1


finetuning :是一种 迁移学习(Transfer Learning)方法 , 在别人训练好的网络模型基础上进行训练。

步骤 :

1 准备数据,

2  生成lmdb/leveldb格式 ,最好打乱顺序(shuffing),也可以用原始bmp、jpg格式

命令行示例:

SET GLOG_logtostderr=1

convert_imageset.exe -backend=leveldb -shuffle -resize_height=256 -resize_width=256 ./ DATA\test\Sample_Info.txt  DATA\test\test_leveldb 0
convert_imageset.exe -backend=leveldb -shuffle -resize_height=256 -resize_width=256 ./ DATA\train\Sample_Info.txt  DATA\train\train_leveldb 0
pause
 

3 计算均值

命令行示例:

compute_image_mean -backend=leveldb  DATA/train/train_leveldb DATA/train/mean.binaryproto
pause

4 修改_solver.prototxt、_train_val.prototxt 、deploy.prototxt。

_train_val.prototxt ,修改全连接层的名字,已达到重新学习该层的目的,并且deploy.prototxt的全连接层也对应修改;

适当提高全连接层的学习率;


5 开始 finetuing

命令行示例:

caffe train --solver=MODEL\fine_tuing_solver.prototxt --weights=MODEL\bvlc_reference_caffenet.caffemodel
pause

NOTE:

1 在caffe中固定某些网络参数,只训练某些层可以将具体层的lr_mult设置为0;

2 如果将propagate_down 设置为 0 ,该层不会向前传播,因此前面层参数将不会更新;

猜你喜欢

转载自blog.csdn.net/yuhao032125/article/details/80210475