HDF5 输入到 caffe 的数据格式
format for data for HDF5 input to caffe
我的图像是 3 通道 RGB 图像。我将每个图像转换为矢量形式。
我打算使用 HDF5 格式将此 'data' 提供给 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)。数据 blob 的形式应为 (number_samples,channel,width, height),符合 `http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1Blob.html
当我运行用(row, col, channel, number_samples)训练时,代码运行s。当我 运行 使用 (number_samples, channels, row, col, ) 训练时,代码给出错误:
hdf5_data_layer.cpp:53] Check failed: hdf_blobs_[i]->shape(0) == num (7500 vs. 99)
其中 7500 是数据集中的图像数量。
HDF5 格式数据的正确输入方法是什么?
其中一个原因是 Matlab 以 Fortran 顺序而不是 C 顺序存储数据,这是 HDF5 内部使用的顺序。看看 HDF5 的 Matlab 文档,它应该对此非常明确。
我的图像是 3 通道 RGB 图像。我将每个图像转换为矢量形式。 我打算使用 HDF5 格式将此 'data' 提供给 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)。数据 blob 的形式应为 (number_samples,channel,width, height),符合 `http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1Blob.html
当我运行用(row, col, channel, number_samples)训练时,代码运行s。当我 运行 使用 (number_samples, channels, row, col, ) 训练时,代码给出错误:
hdf5_data_layer.cpp:53] Check failed: hdf_blobs_[i]->shape(0) == num (7500 vs. 99)
其中 7500 是数据集中的图像数量。 HDF5 格式数据的正确输入方法是什么?
其中一个原因是 Matlab 以 Fortran 顺序而不是 C 顺序存储数据,这是 HDF5 内部使用的顺序。看看 HDF5 的 Matlab 文档,它应该对此非常明确。