我从Caffe开始,并且mnist示例运行良好
我的火车和标签数据为data.mat
。 (我有300个培训数据,其中30个要素和标签(-1, +1)
保存在data.mat
)。
但是,我不太明白如何使用caffe来实现我自己的数据集?
有没有一步一步的教程可以教我?
非常感谢!!!!任何建议将不胜感激!
答案 0 :(得分:2)
我认为将数据从Matlab传输到caffe的最直接方式是通过HDF5文件。
首先,使用hdf5write
将数据保存在Matlab中的HDF5文件中。我假设您的训练数据存储在大小为300 x 30的变量名称X
中,并且标签存储在y
300 x 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数组:第一个维度是要素数量,第二个维度是要素的维度,后两个维度是1(表示无空间维度)。另请注意,HDF5中的数据名称为"X"
和"label"
- 这些名称应该用作输入数据层的"top"
个blob。
为什么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。