如何在caffe中训练/测试我自己的数据集?

时间:2015-12-13 07:47:12

标签: matlab dataset neural-network deep-learning caffe

我从Caffe开始,并且mnist示例运行良好 我的火车和标签数据为data.mat。 (我有300个培训数据,其中30个要素和标签(-1, +1)保存在data.mat)。

但是,我不太明白如何使用caffe来实现我自己的数据集?

有没有一步一步的教程可以教我?

非常感谢!!!!任何建议将不胜感激!

1 个答案:

答案 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