本文主要是介绍关于solver文件中test_iter和test_interval设置问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转自这里
solver.prototxt文件:
net: "models/bvlc_reference_caffenet/train_val.prototxt"
test_iter: 100
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_reference_caffenet/caffenet_train"
solver_mode: GPU
在caffe中的一次迭代iterration指的是一个batch,而不是一张图片。
test_iter:
在测试的时候,需要迭代的次数,即test_iter* batchsize(TEST阶段)=测试集的大小,TEST阶段batchsize可以在prototx文件里设置,如下:
layer {name: "data"type: "Data"top: "data"top: "label"include {phase: TEST}transform_param {mirror: falsecrop_size: 227mean_file: "data/ilsvrc12/imagenet_mean.binaryproto"}data_param {source: "examples/imagenet/ilsvrc12_val_lmdb"batch_size: 50 ##这里backend: LMDB}
}
test_interval:
interval是区间的意思,该参数表示:训练的时候,每迭代1000次(上面设置的是1000)就进行一次测试。
caffe在训练的过程是边训练边测试的。训练过程中每1000次迭代(也就是32000个训练样本参与了计算,TRAIN阶段batchsize为32),计算一次测试误差。计算一次测试误差就需要包含所有的测试图片,这样可以认为在一个epoch里,训练集中的所有样本都遍历一遍,但测试集的所有样本至少要遍历一次,至于具体要多少次,也许不是整数次,这就要看代码,大致了解下这个过程就可以了。
这篇关于关于solver文件中test_iter和test_interval设置问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!