HDF5输入到caffe的数据格式

时间:2017-01-11 19:29:14

标签: format caffe hdf5

我的图像是3通道RGB图像。我将每个图像转换为矢量形式。 我打算用HDF5格式将这些'数据'提供给caffe。

形成HDF5数据的代码是(使用matlab)

images=csvread('vectorized_image.txt');
labels_new=csvread('labels.txt');

images=images.';

% reshape images to 4-D: [rows,col,channel,numbers]
trainData=reshape(images,[99 99 3 size(images,2)]);

% permute to [cols,rows,channel,numbers]
%trainData=permute(trainData,[2 1 3 4]);

% permute lables to [labels, number of labels ]

%trainLabels4=permute(label4,[2,1]);
trainLabels=permute(labels_new,[2,1]);

h5create('hand_train.hdf5','/data',size(trainData),'Datatype','double');
  h5create('hand_train.hdf5','/label',size(trainLabels),'Datatype','double');

h5write('hand_train.hdf5','/data',trainData);
h5write('hand_train.hdf5','/label',trainLabels);

上面的数据blob是格式(row,col,channel,number_samples)。根据“http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1Blob.html

,数据blob的形式应为(number_samples,channel,width,height)

当我使用(row,col,channel,number_samples)进行训练时,代码会运行。当我使用(number_samples,channels,row,col,)进行训练时,代码会出错:

hdf5_data_layer.cpp:53] Check failed: hdf_blobs_[i]->shape(0) == num (7500 vs. 99) 

其中7500是数据集中的图像数。 输入HDF5格式数据的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

这方面的一个主要原因是Matlab以Fortran顺序存储数据而不是C顺序,这是HDF5内部使用的。看看HDF5的Matlab文档,它应该非常明确。