Caffe精度大于100%

时间:2015-11-17 16:07:18

标签: neural-network deep-learning caffe conv-neural-network pycaffe

我正在构建一个但是,当我使用lenet example上提供的批量大于110的自定义列车功能时,我的准确度大于1(100%)。

如果我使用批量大小32,我得到30%的准确度。批量大小等于64我的净精度为64.批量大小等于128,精度为1.2。

我的图片是32x32。 训练数据集:56张中性面部图像。 60张惊喜面孔的图像。测试数据集:15张中性面图像。令人惊讶的15张图像。

这是我的代码:

def train(solver):

niter = 200
test_interval = 25 

train_loss = zeros(niter)
test_acc = zeros(int(np.ceil(niter / test_interval)))
output = zeros((niter, 32, 2))

for it in range(niter):
    solver.step(1)
    train_loss[it] = solver.net.blobs['loss'].data
    solver.test_nets[0].forward(start='conv1')
    output[it] = solver.test_nets[0].blobs['ip2'].data[:32]
    if it % test_interval == 0:
        print 'Iteration', it, 'testing...'

        correct = 0

        for test_it in range(100):
            solver.test_nets[0].forward()
            correct += sum(solver.test_nets[0].blobs['ip2'].data.argmax(1) == solver.test_nets[0].blobs['label'].data)

        test_acc[it // test_interval] = correct / 1e4

那么,我的代码出了什么问题?

1 个答案:

答案 0 :(得分:3)

在您的测试代码中,您运行100次迭代(python translate.py --self_test 1 ),在每次迭代中计算for test_it in range(100),作为批次中正确的示例数量。然后将该数字除以1e4。

让我们假设您的模型非常好并且具有几乎100%的预测率。然后在100次迭代中每次批量大小为32,你将增加32到correct,产生3200.然后你将其除以1e4,最后得到0.32,这几乎与你看到的一致(你的数字略有更少,因为有时你的模型确实错误预测了目标。)

要修复它,您可以替换

correct

test_acc[it // test_interval] = correct / 1e4