关于solver文件中test_iter和test_interval设置问题

来源:互联网 发布:数易文化计算法 编辑:程序博客网 时间:2024/06/06 03:46

转自这里

solver.prototxt文件:

net: "models/bvlc_reference_caffenet/train_val.prototxt"test_iter: 100test_interval: 1000base_lr: 0.01lr_policy: "step"gamma: 0.1stepsize: 100000display: 20max_iter: 450000momentum: 0.9weight_decay: 0.0005snapshot: 10000snapshot_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: false    crop_size: 227    mean_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里,训练集中的所有样本都遍历一遍,但测试集的所有样本至少要遍历一次,至于具体要多少次,也许不是整数次,这就要看代码,大致了解下这个过程就可以了。


0 0
原创粉丝点击