数据类型 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]
我的数据集是一个 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]