数据类型类: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: ***

【问题讨论】:

请在 shell h5ls 中运行以查看存储数组的实际形状 [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变量与数据类型(初始包装类)

Annual salary30W+Java开发工程师——2.Java变量与数据类型(初始包装类)

JavaLearn # Java的常用类

java中包装类介绍

JVM02_类加载子系统

java容器类table,含答案解析