使用caffe 主要需要先编写prototxt文件,比如包括train.prototxt, deploy.prototxt, solve.prototxt. 其train.prototxt主要描述caffe训练每一层网络结构; deploy.prototxt 和train.prototxt差不多,最大区别是没有loss, 而solve.prototxt主要是设置训练时使用的方法,学习率, 模型保存之类的。
比如 solver.prototxt:
net: "model_simple/train.prototxt"
base_lr: 0.00001
lr_policy: "multistep"
gamma: 0.5
stepvalue: 200000
stepvalue: 300000
stepvalue: 400000
stepvalue: 500000
momentum: 0.9
weight_decay: 0.0004
max_iter: 1200000
snapshot: 5000
snapshot_prefix: "snapshot/flow"
solver_mode: GPU # Some of our layers only support GPU
type: "Adam"
momentum2: 0.999
display: 50
train.prototxt大概长这样(这是caffe自带的手写数字识别的一个例子,我嫌太长删了一层):
layer{
name: "LeNet"
input: "data"
input_shape {
dim: 64
dim: 1
dim: 28
dim: 28
}
}
layer {
name: "conv1"
type: "Convolution"
bottom: "data"
top: "conv1"
param {
lr_mult: 1
}
param {
lr_mult: 2
}
convolution_param {
num_output: 20
kernel_size: 5
stride: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layer {
name: "pool1"
type: "Pooling"
bottom: "conv1"
top: "pool1"
pooling_param {
pool: MAX
kernel_size: 2
stride: 2
}
}
layer {