如何在caffe中训练/testing我自己的数据集?
我从Caffe开始,这个例子运行得很好。
我有火车和标签数据data.mat
。 (我有300个训练数据,有30个特征,标签是(-1, +1)
,保存在data.mat
)。
但是,我不太明白如何使用caffe来实现我自己的数据集?
有没有一步一步教程可以教我?
非常感谢!!!! 任何意见将不胜感激!
我认为将数据从Matlab传输到caffe最直接的方法是通过HDF5文件。
首先,使用hdf5write
将您的数据保存在HDF5文件中的Matlab中。 我假设你的训练数据存储在一个大小为300乘30的variables名称X
,并且标签存储在一个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' );
请注意,数据保存为四维数组:第一个维度是要素的数量,第二个维度是要素的维度,最后两个维度是1(不包含空间维度)。 还要注意HDF5中的数据名称是"X"
和"label"
– 这些名称应该用作input数据层的"top"
斑点。
为什么要permute
? 请看这个答案的解释。
您还需要准备一个文本文件,列出您正在使用的所有hdf5文件的名称(在您的情况下,只有my_data.h5
)。 文件/path/to/list/file.txt
应该只有一行
/path/to/my_data.h5
现在你可以添加一个input数据层到你的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 } }
有关hdf5input图层的更多信息,你可以在这个答案中看到。