caffe-windows:finetune
来源:互联网 发布:vmware安装centos 编辑:程序博客网 时间:2024/04/29 03:26
http://blog.csdn.net/qq_26898461/article/details/50540801
http://blog.csdn.net/qq_26898461/article/details/50445392
index.py:爬虫下载百度图片
data_process.m:对数据进行预处理,挑出三通道数据,并改变数据到256*256大小。
原始数据文件: raw_data
转换完数据文件: data_example
train_test.m:对转换完的数据分成训练集和测试集并做标签
转换完数据文件: train_exampletest_example
标签文件:train_label.txt test_label.txt
convert.bat:转换为leveldb文件
转换完数据文件: train_lmdbtest_lmdb
需先下载:bvlc_reference_caffenet.caffemodel
solver.prototxt参数说明:
batchsize:每迭代一次,网络训练图片的数量,例如:如果你的batchsize=256,则你的网络每迭代一次,训练256张图片;则,如果你的总图片张数为1280000张,则要想将你所有的图片通过网络训练一次,则需要1280000/256=5000次迭代。
epoch:表示将所有图片在你的网络中训练一次所需要的迭代次数,如上面的例子:5000次;我们称之为 一代。所以如果你想要你的网络训练100代时,则你的总的迭代次数为max_iteration=5000*100=500000次;
max_iteration:网络的最大迭代次数如上面的500000次;同理,如果max_iteration=450000,则该网络被训练450000/5000=90代。
test_iter:表示测试的次数;比如,你的test阶段的batchsize=100,而你的测试数据为10000张图片,则你的测试次数为10000/100=100次;即,你的test_iter=100;
test_interval:表示你的网络迭代多少次才进行一次测试,你可以设置为网络训练完一代,就进行一次测试,比如前面的一代为5000次迭代时,你就可以设置test_interval=5000;
base_lr:表示基础学习率,在参数梯度下降优化的过程中,学习率会有所调整,而调整的策略就可通过lr_policy这个参数进行设置;
lr_policy:学习率的调整策略:
- - fixed: 保持base_lr不变.
- - step: 如果设置为step,则还需要设置一个stepsize, 返回 base_lr * gamma ^ (floor(iter / stepsize)),其中iter表示当前的迭代次数
- - exp: 返回base_lr * gamma ^ iter, iter为当前迭代次数
- - inv: 如果设置为inv,还需要设置一个power, 返回base_lr * (1 + gamma * iter) ^ (- power)
- - multistep: 如果设置为multistep,则还需要设置一个stepvalue。这个参数和step很相似,step是均匀等间隔变化,而mult-
- step则是根据stepvalue值变化
- - poly: 学习率进行多项式误差, 返回 base_lr (1 - iter/max_iter) ^ (power)
- - sigmoid: 学习率进行sigmod衰减,返回 base_lr ( 1/(1 + exp(-gamma * (iter - stepsize))))
momentum:表示上一次梯度更新的权重;
weight_decay:表示权重衰减,用于防止过拟合;
在solver.prototxt文件里修改net
test_iter
test_interval
修改train_val.prototxt里面的lr_mult
其他网络里面的修改成0.1,0.2;fc8里面修改成10,20;
根据已知的网络进行fine-tune
fine-tune的好处是可以利用别人预先调节好的网络,适当微调网络结构和参数就可以用于自己的应用。注意事项:0.fine-tune的网络和之前网络结构应该基本一致,特别是输入,不然对应层参数个数不同,会报错
1.训练的时候加入 --weight 指定从哪个模型导入对应层的参数(根据名字)。
2.由于caffe是根据对应层的名字来寻找是否需要填充对应的参数,所以对于你需要导入参数的层,名字和原来网络保持不变,对于你需要自己调节的层,名字需要修改。
3.如果你修改了网络的结构( 比如由1000类分类改为28),则对应层的名字需要改掉,不然会报错。
4.对于你要调节的层,学习率倍数lr_mult需要变大(10,20),其他层尽可能小;如果其他层不需要调节,可以置为0.
1 0
- caffe-windows:finetune
- Caffe finetune
- windows下使用caffe finetune自己的数据
- Caffe学习之finetune
- caffe下的finetune训练
- [windows caffe]在VGG_FACE上finetune自己的人脸数据集
- caffe深度学习(二)finetune
- caffe模型 在 digits上的finetune
- Caffe 使用记录(三)finetune
- 基于caffe在已有模型上进行微调finetune
- caffe Resnet-50 finetune 所有代码+需要注意的地方
- 深度学习—— caffe下进行微调finetune
- caffe 通过model zoo 使用训练好的模型 finetune
- caffe Resnet-50 finetune 所有代码+需要注意的地方
- 基于caffe在已有模型上进行微调finetune
- caffe使用预训练的模型进行finetune--caffe学习(1)
- caffe finetune predict and classify the lung nodule( 肺结节的分类)
- DL开源框架Caffe | 模型微调 (finetune)的场景、问题、技巧以及解决方案
- DATETIME与TIMESTAMP比较与使用
- 跟我学SpringMVC目录汇总贴、PDF下载、源码下载
- python 使用 CRFPP包错误问题
- 学习ReactNative开发 小知识点记录
- Spring之DI
- caffe-windows:finetune
- 彻底掌握Quartus——Signaltap篇
- 栈的应用-后缀表达式运算求值
- Android系统架构特点及优劣分析
- xml整理
- jupyter notebook安装
- 个人记录-LeetCode 85. Maximal Rectangle
- Euler Operators
- greenDAO 简单使用配置