【问题标题】:Caffe training without testing未经测试的 Caffe 培训
【发布时间】:2016-02-27 13:59:30
【问题描述】:

我正在使用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 教程中的 cmets 指出此“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

如何在训练时关闭测试?

【问题讨论】:

    标签: machine-learning neural-network deep-learning caffe


    【解决方案1】:

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

    在您的solver.prototxt 中,取test_itertest_interval 的行

    test_iter: 1000
    test_interval: 1000
    

    并简单地省略它们。如果你想在一开始就阻止测试,你可以添加一行@shai suggested

    test_initialization: false
    

    【讨论】:

    • '在细节上有点缺乏' - 这是一个巨大的轻描淡写)
    【解决方案2】:

    你也有一个标志。添加

    test_initialization: false
    

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

    【讨论】:

    • 不幸的是,这并不妨碍在训练期间进行测试。
    • @WesModes 如果你另外设置 otest_interval 大于 max_iter 你应该没问题
    猜你喜欢
    • 2015-11-05
    • 2017-03-02
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多