2017-02-17 46 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支持列车网文件名和测试网文件名的定义。