在上面的两篇文章中,我们讲述了lenet-5网络模型,有了模型,我们还需要有求解器,才能够对模型进行训练和测试,求解器描述文件是对求解器参数进行描述的文件,文件名为lenet_solver.prototxt,它位于caffe根目录的examples/mnist/路径下。这个文件比较简单,如下所示。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 1net: "examples/mnist/lenet_train_test.prototxt"
2test_iter: 100
3test_interval: 500
4base_lr: 0.01
5momentum: 0.9
6weight_decay: 0.0005
7lr_policy: "inv"
8gamma: 0.0001
9power: 0.75
10display: 100
11max_iter: 10000
12snapshot: 5000
13snapshot_prefix: "examples/mnist/lenet"
14solver_mode: CPU
15
下面我们逐条对这个文件进行详解。
1
2 1net: "examples/mnist/lenet_train_test.prototxt"
2
这一行表示求解过程使用的网络模型的描述文件为examples/mnist/路径下的lenet_train_test.prototxt
1
2 1test_iter: 100
2
这一行定义的test_iter表示测试的迭代次数,定义为100次,经过前几篇文章的介绍,我们知道,测试集的样本数为10000,而lenet网络模型中的定义,测试阶段一次迭代的样本数为100,测试阶段进行100次迭代,则正好覆盖到整个测试集样本。
1
2 1test_interval: 500
2
这行定义的是测试间隔,取值500表明每进行500次训练迭代时,进行一次测试阶段进行预测。
1
2
3
4 1base_lr: 0.01
2momentum: 0.9
3weight_decay: 0.0005
4
这3行对三个参数进行赋值,base_lr为学习速率,momentum为遗忘因子,weight_decay为权值衰减常数。
1
2
3 1lr_policy: "inv"
2
3
这一行表示学习速率衰减策略采用inv(倒数衰减策略)。它的计算公式为 base_lr * (1 + gamma * iter) ^ (- power)
1
2
3 1gamma: 0.0001
2power: 0.75
3
这两行定义的是inv策略用使用的参数,在inv策略公式中,iter为当前迭代次数。
1
2 1display: 100
2
这一行表示,每个100次迭代,在终端中打印日志。
1
2 1max_iter: 10000
2
这一行表示,最大迭代次数为10000次。
1
2
3 1snapshot: 5000
2snapshot_prefix: "examples/mnist/lenet"
3
这两行是对快照的定义,每隔5000次迭代打印一次快照,并且快照的的文件名前缀为examples/mnist/lenet
1
2 1solver_mode: CPU
2
这一行的作用是设置求解器模式为CPU模式,如果需要GPU则设置为GPU模式。
初学者可能对上面的解释有些还看不懂,这需要长时间的知识积累,后面的文章中,我们会对caffe的重要源码进行解读,经过解读之后,相信大家对这个描述文件会有更深刻的了解。