无需测试的 Caffe 培训

Caffe training without testing

我正在使用 Caffe 在已知图像数据库上训练 AlexNet。我正在进行基准测试并希望排除测试阶段。

这是 AlexNet 的 solver.prototxt

net: "models/bvlc_alexnet/train_val.prototxt"
test_iter: 1000
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_alexnet/caffe_alexnet_train"
solver_mode: GPU

虽然我从未找到详细说明所有 prototxt 选项的权威文档,但 Caffe 教程中的评论表明此“test_interval”表示我们测试经过训练的网络之后的迭代次数。

我想我可以将它设置为零以关闭测试。没有。

F1124 14:42:54.691428 18772 solver.cpp:140] Check failed: param_.test_interval() > 0 (0 vs. 0)
*** Check failure stack trace: ***

所以我将 test_interval 设置为一百万,但当然,Caffe 仍然在迭代零时测试网络。

I1124 14:59:12.787899 18905 solver.cpp:340] Iteration 0, Testing net (#0)
I1124 14:59:15.698724 18905 solver.cpp:408]     Test net output #0: accuracy = 0.003

如何在训练时关闭测试?

你也有一个标志。添加

test_initialization: false

到你的 'solver.prototxt' 就完成了 ;)

Caffe 的文档在细节上有些欠缺。最后告诉我的是这个违反直觉的解决方案:

在您的 solver.prototxt 中,使用 test_itertest_interval

的行
test_iter: 1000
test_interval: 1000

并简单地忽略它们。如果您想在开始时阻止测试,您可以添加一行 :

test_initialization: false