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