2017-02-17 19 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 поддерживает определение имени файла net net и имени файла тестовой сети.