Я до сих пор не знаю, чтобы создать базу данных LevelDB моих матриц данных 2D для использования в CAFFE, но я, наконец, решить проблему:
Я закончил с использованием Shai's proposal для преобразования данных в формат HDF5. В Matlab довольно легко читать и писать базы данных HDF5. Вам просто нужно использовать функции hdf5info()
, h5read()
, h5create()
и h5write()
, которые уже реализованы в Matlab.
Пример:
- Изменение типа данных в вашем кофейной prototxt файл в "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: Ваш вклад обучения данные должны быть 4-D матрицей, где последние два измерения равны размеру вашей матрицы входных данных 2D в матрице.
Пример: возьмите 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);
- Как вы можете видеть, кофейная ожидает базу данных hdf5 с переменными «данные» и «ярлык»
- Чтение базы данных:
Использование hdf5info(filename)
для получить имена наборов данных внутри базы данных hdf5. Затем с помощью data = h5read(filename,dataset)
читать набора данных
Знаете ли вы https://github.com/kyamagu/matlab-leveldb? – fuesika
Пока нет. Вы сами это пробовали? Я просто попытался загрузить с ним базу данных leveldb. Загрузка, похоже, работает нормально, но база данных кажется пустой. (Я не могу отображать какие-либо ключи, а переменная matlab имеет всего лишь 100 байтов, а реальная база данных - 2Gb). В моей базе данных хранятся файлы «data.mdb» и «lock.mdb». Может быть, caffe использует некоторую модифицированную версию leveldb? – mcExchange
Почему бы не использовать слой HDF5_DATA? более гибкий ... – Shai