从Caffe中的LMDB文件进行测试

时间:2016-06-27 23:36:52

标签: caffe pycaffe lmdb

我想知道如何在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

1 个答案:

答案 0 :(得分:0)

请参阅我的回答here。不要忘记减去均值,否则你的准确度会降低。上面发布的代码链接可以解决这个问题。