Caffe的几个重要文件
用了这么久Caffe都没好好写过一篇新手入门的博客,最近应实验室小师妹要求,打算写一篇简单、快熟入门的科普文。
利用Caffe进行深度神经网络训练第一步需要搞懂几个重要文件:
- solver.prototxt
- train_val.prototxt
- train.sh
接下来我们按顺序一个个说明。
solver.prototxt
solver这个文件主要存放模型训练所用到的一些超参数:
- net := 指定待训练模型结构文件,即train_val.prototxt
- test_interval := 测试间隔,即每隔多少次迭代进行一次测试
- test_initialization := 指定是否进行初始测试,即模型未进行训练时的测试
- test_iteration := 指定测试时进行的迭代次数
- base_lr := 指定基本学习率
- lr_policy := 学习率变更策略,这里有介绍,可供参考
- gamma := 学习率变更策略需要用到的参数
- power := 同上
- stepsize := 学习率变更策略Step的变更步长(固定步长)
- stepvalue := 学习率变更策略Multistep的变更步长(可变步长)
- max_iter := 模型训练的最大迭代次数
- momentum := 动量,这是优化策略(Adam, SGD, … )用到的参数
- momentum2 := 优化策略Adam用到的参数
- weight_decay := 权重衰减率
- clip_gradients := 固定梯度范围
- display := 每隔几次迭代显示一次结果
- snapshot := 快照,每隔几次保存一次模型参数
- snapshot_prefix := 保存模型文件的前缀,可以是路径
- type := solver优化策略,即SGD、Adam、AdaGRAD、RMSProp、NESTROVE、ADADELTA等
- solver_mode := 指定训练模式,即GPU/CPU
- debug_info := 指定是否打印调试信息,这里有对启用该功能的输出作介绍
- device_id := 指定设备号(使用GPU模式),默认为0
用户根据自己的情况进行相应设置,黑体参数为必须指定的,其余参数为可选(根据情况选择)。
train_val.prototxt
train_val文件是用来存放模型结构的地方,模型的结构主要以layer为单位来构建。下面我们以LeNet为例介绍网络层的基本组成:
name: "LeNet"
layer {
name: "mnist" #网络层名称
type: "Data" #网络层类型,数据层
top: "data" #这一层的输出,数据
top: "label" #这一层的输出,标签
include { phase: TRAIN } #TRAIN:=用于训练,TEST:=用于测试
transform_param { scale: 0.00390625 } #对数据进行scale
data_param { #数据层配置
source: "examples/mnist/mnist_train_lmdb" #数据存放路径
batch_size: 64 #指定batch大小
backend: