Как я могу создать слой данных (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
  }
}

person John    schedule 17.02.2017    source источник


Ответы (1)


Это открытая проблема в кафе (вы можете найти ссылки на другие соответствующие потоки SO там ).

Что вы можете сделать, так это написать два прототипа: один для обучения и один для теста. Solver.prototxt поддерживает определение имени файла сети поезда и имени файла тестовой сети.

person Shai    schedule 17.02.2017