【问题标题】:Testing from an LMDB file in Caffe从 Caffe 中的 LMDB 文件进行测试
【发布时间】:2016-10-30 02:38:12
【问题描述】:

我想知道如何在 Caffe 中仅为 LMDB 文件设置一个测试阶段。我已经训练了我的模型,一切看起来都很好,我的损失减少了,我在一张一张加载的图像上得到的输出也看起来不错。

现在我想看看我的模型在单独的 LMDB 测试集上的表现如何,但似乎无法成功。由于我的损失函数已经在 caffe 中定义,因此一次加载一个图像来循环对我来说并不理想,这需要我重新定义它。

这是我到目前为止所拥有的,但是这样做的结果没有意义;当我将火车组的损失与我从中获得的损失进行比较时,它们不匹配(相差几个数量级)。有谁知道我的问题可能是什么?

caffe.set_device(0)
caffe.set_mode_gpu()

net = caffe.Net('/home/jeremy/Desktop/caffestuff/JP_Kitti/all_proto/mirror_shuffle/deploy_JP.prototxt','/home/jeremy/Desktop/caffestuff/JP_Kitti/all_proto/mirror_shuffle/snapshot_iter_10000.caffemodel',caffe.TEST)


solver = None  # ignore this workaround for lmdb data (can't instantiate two solvers on the same data)
solver = caffe.SGDSolver('/home/jeremy/Desktop/caffestuff/JP_Kitti/all_proto/mirror_shuffle/lenet_auto_solverJP_test.prototxt')
niter = 100
test_loss = zeros(niter)
count = 0
for it in range(niter):
    solver.test_nets[0].forward()  # SGD by Caffe

    # store the test loss

    test_loss[count] = solver.test_nets[0].blobs['loss']
    print(solver.test_nets[0].blobs['loss'].data)
    count = count+1

【问题讨论】:

    标签: caffe pycaffe lmdb


    【解决方案1】:

    查看我的回答here。不要忘记减去平均值,否则你会得到低准确率。上面发布的代码链接可以解决这个问题。

    【讨论】:

    • 谢谢,但在我看来应该有更简单的方法。在您的代码中,您需要手动向网络指定如何筛选所有经过它的数据。然而在训练阶段,对于完全相同的数据结构,caffe 会自动处理这一切。你知道做类似事情的方法吗?
    • 作为后续,使用与您类似的技术,通过我的测试集需要很长时间,这比我的训练集小得多。我想在进行这种类型的计算时,caffe 的结构被优化为高度并行化,这就是我试图避免瓶颈的原因
    • 你试过这个caffe test -model=models/bvlc_reference_caffenet/train_val.prototxt --weights=models/bvlc_reference_caffenet/<caffenet_train>.caffemodel --iterations=6400 --gpu=0 吗?
    • 还没有,但我会试一试,如果我直接使用终端如何存储结果?
    • 只需在上述命令后附加>> outfile.txt。这是一个基本的 linux 东西。
    猜你喜欢
    • 2016-03-24
    • 2020-01-12
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 2016-02-11
    • 2016-09-29
    相关资源
    最近更新 更多