2017-02-17 47 views
1

我有一個HDF5類型的數據層。它包含火車和測試階段如期如何在同一個原型文件中生成數據層(HDF5)進行培訓和測試?

name: "LogisticRegressionNet" 
layer { 
    name: "data" 
    type: "HDF5Data" 
    top: "data" 
    top: "label" 
    include { 
    phase: TRAIN 
    } 
    hdf5_data_param { 
    source: "examples/hdf5_classification/data/train.txt" 
    batch_size: 10 
    } 
} 
layer { 
    name: "data" 
    type: "HDF5Data" 
    top: "data" 
    top: "label" 
    include { 
    phase: TEST 
    } 
    hdf5_data_param { 
    source: "examples/hdf5_classification/data/test.txt" 
    batch_size: 10 
    } 
} 

我想用python來生成它。這是我的代碼

import caffe 
from caffe import layers as L # pseudo module using __getattr__ magic to generate protobuf messages 
from caffe import params as P # pseudo module using __getattr__ magic to generate protobuf messages 
n = caffe.NetSpec() 
n.data, n.label = L.HDF5Data(batch_size=batch_size, source='examples/hdf5_classification/data/train.txt', ntop=2, include={'phase': caffe.TRAIN}) 
n.data, n.label = L.HDF5Data(batch_size=batch_size, source='examples/hdf5_classification/data/test.txt',ntop=2, include={'phase': caffe.TEST}) 

但是,我的輸出只是測試階段。我該如何解決它?謝謝

layer { 
    name: "data" 
    type: "HDF5Data" 
    top: "data" 
    top: "label" 
    include { 
    phase: TEST 
    } 
    hdf5_data_param { 
    source: "examples/hdf5_classification/data/test.txt" 
    batch_size: 2 
    } 
} 

回答

1

這是一個未解決的問題in caffe(你可以找到其他相關SO線程的鏈接)。

你可以做的是寫兩個原型文件一列火車和一個測試。 solver.prototxt支持列車網文件名和測試網文件名的定義。