caffe训练分类网络笔记

1、caffe环境:

  没有手动本机安装caffe,使用的docker,可在https://hub.docker.com/ 里面下载到符合自己环境的docker。

      进入环境命令:sudo docker run --runtime=nviida -v /绝对路径/:/Downloads ba2 /bin/bash

2、网络:

  github上找所需的网络,早期使用caffe框架时,各种模型资源很丰富,后来就主要开源相关配置文件和基础模型了。找到基础模型和与之对应的deploy.prototxt文件。

  deploy.prototxt 修改全连接层的output_num后,可用于Python脚本测试模型的准确率,经典的caffe测试脚本网上有,如https://blog.csdn.net/u013841196/article/details/72799680

  在deploy.prototxt的基础上添加data层(训练和验证)、loss层和准确率计算层(替换掉prob层)可得到trainval.prototxt。

      另有,solver.prototxt文件用于调用trainval.prototxt和caffemodel,设置训练参数。

net: "ResNet-50-trainval.prototxt"
#每次测试跑多少次迭代,照片数量/test的batch_size
test_iter: 20
#每多少次迭代进行一次测试
test_interval: 100
test_initialization: false

#初始的学习率
base_lr: 0.001
#学习率的下降策略
lr_policy: "step"
gamma: 0.1
stepsize: 5000

#每迭代多少次打印一次loss信息
display: 100
#最多迭代多少次
max_iter: 15000
#梯度下降策略,90%依赖这次,10%依赖上次
momentum: 0.9
#正则项的比重
weight_decay: 0.0001
#迭代多少次生成一次中间的caffemodel
snapshot: 5000
#caffemodel的前缀
snapshot_prefix: "models/resnet_50.caffemodel"
solver_mode: GPU

3、训练

  训练命令

#!/usr/bin/env sh  
TOOLS=/opt/caffe/build/tools  
GLOG_logtostderr=0 GLOG_log_dir=./ft_log/ $TOOLS/caffe train --solver=solver.prototxt --weights=/Downloads/ResNet/ResNet-50/snapshot/resnet_50_iter_100000.caffemodel -gpu 0  #加入 -gpu 选项

     如果训练的损失不下降,可以将学习率按5倍、10倍的减小,同时这里的lr_policy是step,可以设置stepsize微调,返回的学习率为base_lr*gamma^(iter/stepsize)。

  如果验证集在模型训练时与单侧的时候准确度相差较大,可以考虑从:1、训练时验证集没有完全被验证;2、自测的时候预处理不合理,如均值文件、归一化方式等。

测试命令

/opt/caffe/build/tools/caffe test -model trainval.prototxt -weights ./models/resnet_50_iter_10000.caffemodel -gpu 0 -iterations 20
原文地址:https://www.cnblogs.com/xiaoheizi-12345/p/12327039.html