训练图片1075张,测试图片360


参数设置

net: "./image_train_val.prototxt"
test_iter: 271
test_interval: 100
base_lr: 0.01
display: 20
max_iter: 25000
lr_policy: "step"
gamma: 0.1
momentum: 0.9
weight_decay: 0.0005
power: 0.75
stepsize: 100
snapshot: 5000
snapshot_prefix: "snapshot"
solver_type: SGD
solver_mode: GPU


net:  网络模型(训练网络模型、测试网络模型)

test_iter:表示网络的测试迭代次数。网络一次迭代将一个batchSize的图片进行测试,所以为了能将validation集中所有图片都测试一次。这个参数乘以TEST的batchSize应该等于validation集中图片总数量。即test_iter*batchSize=测试图片总数。

test_interval:测试间隔,表示网络迭代(训练即train)多少次进行一次测试。一次迭代即一个batchSize的图片通过网络正向传播和反向传播的整个过程。比如这里设置的是224,即网络每迭代224次即对网络的准确率进行一次验证。一般来说,我们需要将训练集中所有图片都跑一遍,再对网络的准确率进行测试,整个参数乘以网络data层(TRAIN)中batchSize参数应该等于训练集中图片总数量的倍数。即test_interval*batchSize=n*train_num(训练图片总数,n为正整数)。

base_lr:表示网络的基础学习率。学习率过高可能导致loss持续86.33333,也可能导致loss无法收敛等等问题。过低的学习率会使网络收敛慢,也有可能导致梯度损失。一般我们设置为0.01。

display: 每多少次显示一次。

max_iter: 网络的最大迭代次数。训练集中的图片当然不能只训练一次就算了,要反复多次的进行训练,所以这个参数应该要大一些。(与snapshot. test_iter. test_interval有关)

lr_policy: 学习率变化规律。

gamma: gamma是lr的衰减系数(学习率变化指数)。一般不改。

momentum: 动量,学习的参数。一般不改。

weight_decay: 权重衰减,学习的参数。一般不改。

stepsize: stepsize是lr的衰减步长(学习率变化频率),每多少次学习率递减。这里是迭代100次学习率递减。  

snapshot: 每多少次保存一次学习的结果。即caffemodel。(snapshot = test_interval * n, snapshot * m = max_iter. m,n均为正整数)

solver_mode: 设置使用GPU还是CPU进行学习训练。

solver_type: 优化算法的选择,一共有六种可选:SGD、AdaDelta、AdaGrad、Adam、Nesterov和RMSProp。默认为SGD。