在学习caffe的时候,除了对于每个层的定义与参数设置之外,还有一个较为重要的是solver文件的编写。然而,一般的solver文件含有较多的参数需要设置,为了能够较好的实现算法的功能,需要对每个参数都有一定的了解。
slover中常见的参数如下:
net : caffe框架的路径
test_iter:根据测试集的大小来进行设置,test_iter * batch_size一般等于整个测试集
test_iterval:训练时,每迭代多少次进行一次测试
test_itersecs:每训练多少秒进行一次测试
base_lr : 起始学习率
lr_policy:学习策略,常见的有step、multistep、inv等等
gamma:学习率的变化,与lr_policy有关
stepsize :每步迭代次数,每训练一个stepsize,学习率就会变为原来的gamma倍数
display:每间隔多少输出一次结果
max_iter:最大迭代次数
momentum:上一次梯度更新的权重
weight_decay :为了防止出现过拟合的权重衰减
snapshot:训练多少次保存一次model和solverstate文件
snapshot_prefix:model和solverstate文件的保存路径和保存文件名
solver_mode:GPU或者CPU
average_loss:将多少次的loss取平均
为了能够更加直观的了解到slover的编写方法,特将centerloss的solver文件给出。
net: "face_example/face_train_test.prototxt"
test_iter: 2000
test_interval: 1000
base_lr:0.1
gamma:0.1
lr_policy:"multistep"
stepvalue:6000
stepvalue:10000
stepvalue:12000
stepvalue:14000
stepvalue:16000
stepvalue:18000
max_iter:18000
display: 100
momentum: 0.9
weight_decay: 0.0005
snapshot: 1000
snapshot_prefix: "face_example/face_snapshot/face_train_test"
solver_mode: GPU