使用 hdf5 作为 caffe 输入,错误:HDF5Data 不转换数据

Posted

技术标签:

【中文标题】使用 hdf5 作为 caffe 输入,错误:HDF5Data 不转换数据【英文标题】:Use hdf5 as caffe input, error: HDF5Data does not transform data 【发布时间】:2017-02-22 15:27:51 【问题描述】:

我使用hdf5文件作为caffe输入数据,出现错误:

hdf5_data_layer.cpp:75] Check failed: !this->layer_param_.has_transform_param() HDF5Data does not transform data.

这是我的定义:

layer 
  name: "weight28"
  type: "HDF5Data"
  include  phase : TRAIN  
  transform_param  scale: 0.00392156862745098 
  hdf5_data_param 
    source: "/home/zhangyu/codes/unsupervised/data/weight28.h5"
    batch_size: 8
  
  top: "weight28"

这是我的 h5 文件的一些信息:

HDF5 weight28.h5 
Group '/' 
    Dataset 'data' 
        Size:  2555000x28
        MaxSize:  Infx28
        Datatype:   H5T_IEEE_F64LE (double)
        ChunkSize:  28x28
        Filters:  none
        FillValue:  0.000000

我找到了similar question,答案是 你不能在 hdf5data 层中使用转换参数。 caffe 中的剂量数据转换有什么作用?我可以取消吗?

【问题讨论】:

【参考方案1】:

针对user6931072Check failed: H5LTfind_dataset(file_id, dataset_name_) Failed to find HDF5 dataset提到的错误:

您应该提供一个文本文件作为源文件,而不是 hdf5 文件。因此,不要使用source: "/home/zhangyu/codes/unsupervised/data/weight28.h5",而是创建一个列出hdf5 文件的文本文件,然后使用source: "/home/zhangyu/codes/unsupervised/data/myhdf5data.txt"

【讨论】:

【参考方案2】:

    正如您已经发现的那样,您不能在 "HDF5Data" 层中包含 transformation_param - caffe 不支持这一点。

    至于变换参数本身,看caffe.proto

// For data pre-processing, we can do simple scaling and subtracting the
// data mean, if provided. Note that the mean subtraction is always carried
// out before scaling.
optional float scale = 1 [default = 1];

拥有transform_param scale: 0.00392156862745098 意味着您的网络希望您的输入按0.0039.. (1/254) 缩放。 当您创建用于训练的 hdf5 数据文件然后从 "HDF5Data" 层中删除 transform_param 时,您可以(并且可能应该)将数据缩放 1/254。

【讨论】:

非常感谢,我删除了 transform 参数并解决了这个问题。但它又出现了这个错误:Check failed: H5LTfind_dataset(file_id, dataset_name_) Failed to find HDF5 dataset。我准备 hdf5 文件有问题吗?我打算准备一个 91250x28x28 的数据集,它与 leveldb 中定义的其他数据一起被馈送到网络。 @Shai @user6931072 对我来说听起来像是一个新问题。从错误消息看来,caffe 找不到文件。

以上是关于使用 hdf5 作为 caffe 输入,错误:HDF5Data 不转换数据的主要内容,如果未能解决你的问题,请参考以下文章

Caffe:将 CSV 文件转换为 HDF5

使用 Caffe 训练数据集时多次加载 HDF5 文件

在 CAFFE 中使用 HDF5 进行视频分类?

HDF5 中的 Caffe 分类标签

使用caffe的HDF5数据完成回归任务

Caffe 编译时没有看到 hdf5.h