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

我使用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

我找到一个类似的问题,答案说 你不能在hdf5data层中使用transform param。
caffe中的数据转换是做什么用的?我可以直接取消它吗?


回答:

  1. 正如你自己已经发现的,你不能在"HDF5Data"层中使用transformation_param – caffe不支持这样做。

  2. 关于转换参数本身,请查看caffe.proto

// 对于数据预处理,我们可以进行简单的缩放和减去数据均值,如果提供了的话。请注意,均值减去总是先于缩放进行。optional float scale = 1 [default = 1];

使用transform_param { scale: 0.00392156862745098 }意味着你的网络期望你的输入被0.0039..(1/254)缩放。
你可以(并且可能应该)在创建用于训练的hdf5数据文件时将其缩放1/254,然后从"HDF5Data"层中移除transform_param

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注