Конвертировать данные в leveldb для кафе

У меня есть куча 2D-матриц данных в Matlab (нет данных изображения, но есть данные с одинарной точностью).

Кто-нибудь знает, как преобразовать 2D-матрицы Matlab в формат leveldb, который необходим caffe для обучения пользовательской нейронной сети?

Я уже делал урок о том, как тренироваться на изображениях (используя архитектуру imagenet) и на mnist (набор данных для распознавания цифр). Однако в последнем примере они не показали, как создать соответствующую базу данных. В учебнике база данных уже была предоставлена.

7 голосов | спросил mcExchange 5 J0000006Europe/Moscow 2015, 13:10:32

1 ответ


0

Я до сих пор не знаю, как создать базу данных leveldb моих матриц 2D-данных для использования в caffe, но я наконец решил проблему:
В итоге я использовал предложение Шая для преобразования данных в формат HDF5. Это довольно легко читать и писать базы данных HDF5 в Matlab. Вам просто нужно использовать функции hdf5info(), h5read(), h5create() и h5write(), которые уже реализовано в Matlab.

Пример:
- Измените тип данных в файле прототипа caffe на «hdf5layer», например:

name: "LeNet"
layer {
  name: "mnist"
  type: "HDF5Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  hdf5_data_param {
    source: "/path/to/your/database/myMnist_train.txt"
    batch_size: 64
  }
}

Используйте Matlab для создания баз данных HDF5:
- Caffe: ваши входные тренировочные данные должны быть четырехмерной матрицей, где последние два измерения равны размеру вашей двумерной матрицы входных данных в matlab.
- Пример: возьмите 2d матрицу (данные изображения или данные с одинарной точностью) размером 54x24 (#rows x cols)
-> транспонировать его и складывать в матрицу 24x54x1xN, где N - число 2d матриц (обучающие выборки)
- Метки находятся в строке 1xN векторов в Matlab.
- Теперь создайте базу данных hdf5:

h5create(['train.h5'],'/data',[24 54 1 length(trainLabels)]);
h5create(['train.h5'],'/label',[1 length(trainLabels)]);
h5write(['train.h5'],'/data',trainData);
h5write(['train.h5'],'/label',trainLabels);
  • Как видите, caffe ожидает базу данных hdf5 с переменными «data» и «label»
  • Чтение базы данных:
    Используйте hdf5info(filename), чтобы получить имена наборов данных в базе данных hdf5. Затем используйте data = h5read(filename,dataset), чтобы прочитать набор данных
ответил mcExchange 16 J0000006Europe/Moscow 2015, 16:34:33

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132