数据类型 class:H5T_FLOAT F0413 08:54:40.661201 17769 hdf5_data_layer.cpp:53] 检查失败:hdf_blobs_[i] ->shape(0) == num ( 1 对 1024)

Datatype class: H5T_FLOAT F0413 08:54:40.661201 17769 hdf5_data_layer.cpp:53] Check failed: hdf_blobs_[i] ->shape(0) == num (1 vs. 1024)

我的数据集是一个 HDF5 文件,包含形状为 [129028,1,12,1024]data 和形状为 [129028,1,1,1]label
但是当我 运行 solver.prototxt 时,我收到错误消息:

I0413 08:54:34.689985 17769 hdf5.cpp:32] Datatype class: H5T_FLOAT
F0413 08:54:40.661201 17769 hdf5_data_layer.cpp:53] Check failed:   
hdf_blobs_[i] ->shape(0) == num (1 vs. 1024) 
*** Check failure stack trace: ***

您似乎是从 matlab 中保存了 hdf5,而不是 python(根据您的 判断)。
从 Matlab 保存数据时,必须记住 Matlab 以列优先方式(fortran 风格)在内存中存储多维数组,而 python、caffe 和许多其他应用程序期望以行优先方式存储多维数组(C 风格)。
因此,在将数据保存到 caffe 的 hdf5 之前,您需要 permute matlab 中的数据。有关详细信息,请参阅

我怀疑如果你在存储的 hdf5 文件中 运行 h5ls shell 你会注意到存储数组的形状实际上是

data   [1024, 12, 1, 129028]
label  [1, 1, 1, 129028]