Я думаю, что самый прямой способ передачи данных из Matlab в caffe - через файл HDF5.
Прежде всего, сохраните свои данные в Matlab в файле HDF5, используя hdf5write
. Я предполагаю, что ваши данные тренировки сохраняются в имени переменной X
размера 300-по-30 и метки сохраняются в y
на 300-на-1 вектор:
hdf5write('my_data.h5', '/X',
single(permute(reshape(X,[300, 30, 1, 1]),[4:-1:1])));
hdf5write('my_data.h5', '/label',
single(permute(reshape(y,[300, 1, 1, 1]),[4:-1:1])),
'WriteMode', 'append');
Обратите внимание, что данные хранятся в 4D array: первое измерение - это количество функций, второе - измерение функции, а последние два - 1 (без пространственных измерений). Также обратите внимание, что имена, данные для данных в HDF5, равны "X"
и "label"
- эти имена должны использоваться как кадры "top"
уровня входных данных.
Почему permute
? посмотрите пожалуйста this answer для объяснения.
Вам также необходимо подготовить текстовый файл с указанием всех файлов hdf5, которые вы используете (в вашем случае только my_data.h5
). Файл /path/to/list/file.txt
должен иметь одну линию
/path/to/my_data.h5
Теперь можно добавить слой ввода данных к train_val.prototxt
layer {
type: "HDF5Data"
name: "data"
top: "X" # note: same name as in HDF5
top: "label" #
hdf5_data_param {
source: "/path/to/list/file.txt"
batch_size: 20
}
include { phase: TRAIN }
}
Для получения более подробной информации относительно уровня ввода hdf5, вы можете увидеть в this answer.
Вам удалось запустить тренировку сети на MATLAB с помощью Caffe? – Royi
@Drazick извините, но я не смешиваю Matlab и caffe. Интерфейс Python намного лучше – Shai
Я видел, как вы ответили на множество проблемных пользователей MATLAB, поэтому я думал, что у вас есть опыт. Кажется, что интерфейс MATLAB глючит. У меня что-то работает над Command Line, но сбой MATLAB. – Royi