neural-network - Caffe HDF5 预处理

标签 neural-network deep-learning hdf5 caffe lmdb

我刚开始使用 Caffe 和深度学习,但我无法理解在 HDF5 数据上使用 Caffe 训练模型所需的预处理步骤是什么。具体来说,

  1. 是否需要将图像转换成[0-1]范围。笔记本示例 (00-classification.ipynb) 指出模型在 [0-255] 范围内运行,而一些引用表明它应该是 [0-1]。我该如何决定?
  2. 根据文档,图像数据批处理的常规 blob 尺寸为 N x channel K x 高度 H x 宽度 W。这没有冲突
  3. RGB 到 BGR 转换的 channel 交换步骤是强制性的吗?
  4. 如何对 HDF5 数据执行图像均值计算?对于 compute_image_mean.cpp,后端是 lmdb。这只是为了提高性能?

至于LMDB的使用,问题1-3依然成立。对此的任何澄清将不胜感激。

最佳答案

欢迎来到咖啡厅。

1. 将输入数据缩放到 [0..1] 或 [0..255] 的范围完全取决于您。有些模型在 [0..1] 范围内工作,其他模型在 [0..255] 范围内工作,这与输入法 (LMDB/HDF5) 的选择完全无关。
这里最重要的是保持一致。如果您决定在 [0..1] 范围内工作,您必须确保训练集和验证集都以相同的方式准备,并且“部署”阶段的新示例被缩放到相同的范围。

2. 正如您已经观察到的那样,Caffe blob 始终是 4 维 batch-channel-width-height。

3. RGB 到 BGR 也不是强制性的,但很常见,因为 BGR 是 opencv 读取图像的方式。同样,这里最重要的是网络整个生命周期的一致性。

4. 最近,模型减去了每个 channel 的平均值,而不是每个像素的平均值。它更方便,尤其是当您更改网络的输入大小时。处理 HDF5 数据时,您可以计算平均图像并将其保存到 binaryproto 中。参见 an example here .

关于neural-network - Caffe HDF5 预处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33766689/

相关文章:

python - 如何同时使用Tensorflow tf.nn.Conv2d进行训练和预测?

python - 如何使用 Tensorflow 后端在 Keras 上获取 categorical_cross_entropy 的梯度?

c++ - 从 C++ : How to read this specific format? 读取 HDF5 数据

python - 使用带有 DateTimeIndex 项的 select 从 HDFStore 检索 Pandas DataFrame 时缺少一个值

python - ValueError : Error when checking target: expected dense_2 to have 3 dimensions, 但得到形状为 (10000, 1) 的数组

neural-network - 假设顺序为Conv2d->ReLU->BN,Conv2d层是否应该有偏置参数?

machine-learning - 需要自组织映射中 U 矩阵的具体示例

python - 喀拉斯 : TypeError: 'AddNL' object has no attribute '__getitem__'

tensorflow - 计算多个张量的损失值

csv - 将h5文件转换为csv文件或文本文件进行数据处理