2016-06-13 26 views
0

我试图在训练时使用caffe求解器中的test_state功能。要实现这一点,我下面的代码添加到solver.prototxt多个测试阶段的结果不正确

test_state: { stage: 'test-on-testSet0' } 
test_iter: 726 
test_state: { stage: 'test-on-testSet1' } 
test_iter: 363 

然后我修改这样的train_val.prototxt:

layer { 
    name: "data" 
    type: "ImageData" 
    top: "data" 
    top: "label" 
    include { 
    phase: TEST 
    stage: "test-on-testSet0" 
    } 
    transform_param { 
    mirror: false 
    scale: 0.0039215684 
    } 
    image_data_param { 
    source: "./set0.lst" 
    batch_size: 1 
    } 
} 

layer { 
    name: "data" 
    type: "ImageData" 
    top: "data" 
    top: "label" 
    include { 
    phase: TEST 
    stage: "test-on-testSet1" 
    } 
    transform_param { 
    mirror: false 
    scale: 0.0039215684 
    } 
    image_data_param { 
    source: "./set0.lst" 
    batch_size: 2 
    } 
} 

它必须指出的是,无论是测试用例是非常相同并且测试运行在./set0.lst文件中的完整图像集上。

仍然在使用build/tools/caffe进行培训时,为两种测试状态打印的精度结果都不相同。 准确度层也正确连接。 这可能是造成这种不匹配的原因?

回答

1

我能够通过对所有test_states使用相同的batch_size来解决问题。 caffe看起来像所有的测试用例都有相同的batch_size。

希望这个答案可能有助于未来的人。

顺便说一下,我猜这可能会作为caffe社区的一个bug发布。我正面临着最新的caffe(df412ac)的这个问题。