solver.prototxt
文件是用来告诉caffe如何训练网络的。solver.prototxt
的各个参数的解释如下:
""
。学习率变化的可选参数有:
“step”——需要设置stepsize
。根据gamma
参数和stepsize
参数来降低学习率,base_lr * gamma ^ (floor(iter / stepsize))
。iter
是当前迭代次数。学习率每迭代stepsize
次变化一次。
“multistep”——与step
类似,需要设置stepvalue
,学习率根据stepvalue
进行变化。
“fixed”——学习率base_lr
保持不变。
“inv”——学习率变化公式为base_lr * (1 + gamma * iter) ^ (- power)
“exp”——学习率变化公式为base_lr * gamma ^ iter}
“poly”——学习率以多项式形式衰减,到最大迭代次数时降为0。学习率变化公式为base_lr * (1 - iter/max_iter) ^ (power)
。
“sigmoid”——学习率以S型曲线形式衰减,学习率变化公式为base_lr * (1 / (1 + exp(-gamma * (iter - stepsize))))
。lr_policy
为step
的情况。lr_policy
为multistep
的情况。model
和solverstate
,值为正整数。model
和solverstate
的前缀,值为带引号的字符串。# lr_policy为multisetp
base_lr: 0.01
momentum: 0.9
lr_policy: "multistep"
gamma: 0.9
stepvalue: 1000
stepvalue: 2000
stepvalue: 3000
stepvalue: 4000
stepvalue: 5000
# lr_policy为step
base_lr: 0.01
momentum: 0.9
lr_policy: "step"
gamma: 0.9
stepsize: 1000
net: "models/bvlc_alexnet/train_val.prototxt"
# 每次测试时进行1000次迭代
test_iter: 1000
# 每进行1000次训练执行一次测试
test_interval: 1000
base_lr: 0.01
lr_policy: "step"
gamma: 0.1
stepsize: 100000
display: 20
max_iter: 450000
momentum: 0.9
weight_decay: 0.0005
snapshot: 10000
snapshot_prefix: "models/bvlc_alexnet/caffe_alexnet_train"
solver_mode: GPU