2016-06-13 28 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)的這個問題。