используйте caffe для обучения Lenet с данными CSV


Извините, у меня есть вопрос об использовании caffe для hd-данных? Я пытаюсь запустить пример на данных Kaggle mnist csv со следующими шагами

  1. Используйте h5py, чтобы преобразовать его в данные h5. (Я использую caffe-example.py преобразовать)

  2. Затем измените lenet_train_test_prototxt и обучите его. Я совершенно не понимаю этого шага.

Единственное изменение, которое я сделал здесь, это

layer {
  name: "mnist"
  type: "HDF5Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    scale: 0.00390625
  }
  data_param {
    source: "data/mnist_train_h5.txt"
    batch_size: 64
  }
}

Как изменить lenet_train_test_prototxt в соответствии с данными? Или также есть еще какие-то файлы, которые мне нужно изменить? Журнал ошибок

enF0724 18:21:11.052737 79373 hdf5_data_layer.cpp:76] Check failed: !this->layer_param_.has_transform_param() HDF5Data does not transform data.

> *** Check failure stack trace: ***
>     @     0x7fe8188bbdaa  (unknown)
>     @     0x7fe8188bbce4  (unknown)
>     @     0x7fe8188bb6e6  (unknown)
>     @     0x7fe8188be687  (unknown)
>     @     0x7fe818caec10  caffe::HDF5DataLayer<>::LayerSetUp()
>     @     0x7fe818c520a3  caffe::Net<>::Init()
>     @     0x7fe818c53e12  caffe::Net<>::Net()
>     @     0x7fe818c0ba20  caffe::Solver<>::InitTrainNet()
>     @     0x7fe818c0c9c3  caffe::Solver<>::Init()
>     @     0x7fe818c0cb96  caffe::Solver<>::Solver()
>     @           0x40c8f0  caffe::GetSolver<>()
>     @           0x406541  train()
>     @           0x404a81  main
>     @     0x7fe817dcdec5  (unknown)
>     @           0x40502d  (unknown)
>     @              (nil)  (unknown) Aborted (core dumped)ter code here
1 2

1 ответ:

Я предполагаю, что у вас есть один файл данных hdf5 'data/mnist_train_h5.hd5'.

  1. Как видно из сообщения об ошибке, слой "HDF5Data" не поддерживает преобразование данных. В частности, вы не можете масштабировать данные по слою.
    Таким образом, любые преобразования, которые вы хотите иметь, вы должны применить их сами во время создания 'data/mnist_train_h5.hd5'.

  2. "HDF5Data" слой не принимает data_param, а скорее hdf5_data_param с параметром source, задающим список двоичного файла hd5 файлы. В вашем случае вы должны подготовить дополнительный текстовый файл 'data/mnist_train_h5.txt' с одной строкой:

Data / mnist_train_h5.hd5

Этот текстовый файл скажет caffe прочитать 'data/mnist_train_h5.hd5'.

Полученный слой должен выглядеть следующим образом:

layer {
  name: "mnist"
  type: "HDF5Data"
  top: "data"
  top: "label"
  hdf5_data_param {
    source: "data/mnist_train_h5.txt"
    batch_size: 64
  }
  include {
    phase: TRAIN
  }
}