关于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: 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里,训练集中的所有样本都遍历一遍,但测试集的所有样本至少要遍历一次,至于具体要多少次,也许不是整数次,这就要看代码,大致了解下这个过程就可以了。


你可能感兴趣的:(关于solver文件中test_iter和test_interval设置问题)