前言
GoogleNet(inception)适合深层次大量分类,大量数据的训练,权值很多,类别太少会出现过拟合
机器学习基础知识
优良指标
- AP、mAP:分类评价指标—AP,mAP
具体Caffe使用
deploy.prototxt文件---------caffe的模型描述文件
“data"和"ImageData”
-
data:传入的文件格式为已经制作好的LMDB格式
backend:lmdb
就是指使用这种格式 -
ImageData:传入的图片文件就可以
InnerProduct---------全连接层,全连接层顶多为100*class,否则过拟合
Dropout--------降低过拟合
solver.prototxt---------超参数文件
最后一个Output——class(分类)的个数
loss(误差)会越来越小,若出现问题,就换一个优化策略
Finetune——迁移学习(微调网络)
deploy.prototxt主要调输入格式和最后一层
solver.prototxt主要调以下
net: "models/bvlc_reference_caffenet/train_val.prototxt" %网络模型的描述文件
test_iter: 1000 #测试总数量÷每批的数量
test_interval: 1000 #训练1000此测试一次
base_lr: 0.1 #学习率
lr_policy: "step"
gamma: 0.1
stepsize: 1000 #1000次降低学习率到0.01,2000次到0.001……
display: 50 #50次显示一次
max_iter: 5000 #迭代次数GPU>>5000次
momentum: 0.9
weight_decay: 0.0005
snapshot: 2500 #保存的快照,或者说5000次进行一次备份
snapshot_prefix: "models/bvlc_reference_caffenet/caffenet_train" %生成的模型文件
solver_mode: GPU
#出现loss不减少时使用另一个优化策略
#type:"AdaDelta"
#delta :1e-6
" ^ "表示链接(和Matlab中的strcat一样)
Caffe的小技巧
Snapshot的使用
Snapshot简介:保存已经训练的参数(例如断电的情况)
snapshot: 2500 #保存的快照,或者说5000次进行一次备份
snapshot_prefix: "models/bvlc_reference_caffenet/caffenet_train" %生成的模型文件
画出网络结构图
使用的例子:GoogleNet
- 法一:将GoogleNet的网络描述文件deploy.prototxt复制粘贴到网站http://ethereon.github.io/netscope/#/editor然后
shift+Enter
执行 - 法二:找到
caffe-windows\caffe\python\draw_net.py
- python执行draw_net.py
- 第一个参数:–rankdir TB ——TB表示TOP到BOTTOM。或者使用LR,从左到右。
- 第二个参数:网络结构描述文件的路径
- 第三个参数:网络图的输出路径
- 比如:
python E:\Caffe\caffe-windows\python\draw_net.py --rankdir TB E:\Caffe\caffewindows\examples\mnist\lenet_train_test.prototxt E:\Caffe\caffe-windows\examples\mnist\draw\net\mnist.png