数据类型类:H5T_FLOAT F0413 08:54:40.661201 17769 hdf5_data_layer.cpp:53] 检查失败:hdf_blobs_[i] ->shape(0)
Posted
技术标签:
【中文标题】数据类型类:H5T_FLOAT F0413 08:54:40.661201 17769 hdf5_data_layer.cpp:53] 检查失败:hdf_blobs_[i] ->shape(0) == num (1 vs. 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) 【发布时间】:2016-08-04 16:53:25 【问题描述】:我的数据集是一个 HDF5 文件,由 data
组成,形状为 [129028,1,12,1024]
和 label
,形状为 [129028,1,1,1]
。
但是当我运行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: ***
【问题讨论】:
请在 shellh5ls
中运行以查看存储数组的实际形状
[caffe]: check fails: Check failed: hdf_blobs_[i]->shape(0) == num (200 vs. 6000)的可能重复
【参考方案1】:
看起来您从 matlab 而非 python 中保存了 hdf5(根据您的 previous question 判断)。
从 Matlab 中保存数据时,必须记住 Matlab 以列优先方式(fortran 样式)将多维数组存储在内存中,而 python、caffe 和许多其他应用程序需要以行优先方式(C 样式)存储多维数组.
因此,您需要先将 matlab 中的数据 permute
保存到 hdf5 以供 caffe 使用。详情请见this answer。
我怀疑如果你在 shell 中对你存储的 hdf5 文件运行 h5ls
,你会注意到存储数组的形状实际上是
data [1024, 12, 1, 129028]
label [1, 1, 1, 129028]
【讨论】:
你是对的!我使用 permute 将数据集保存在 matlab 中。我想我误解了你之前告诉我的内容,所以我得到了错误。非常感谢! 现在我可以毫无错误地训练我的数据了!再次感谢! @Shai 你好,你能给我一些关于我的新问题的建议吗?以上是关于数据类型类:H5T_FLOAT F0413 08:54:40.661201 17769 hdf5_data_layer.cpp:53] 检查失败:hdf_blobs_[i] ->shape(0)的主要内容,如果未能解决你的问题,请参考以下文章
Annual salary30W+Java开发工程师——2.Java变量与数据类型(初始包装类)