python - 哪种是进行图像标准化的正确方法?

标签 python tensorflow neural-network deep-learning data-science

在为神经网络训练准备训练集时,我发现了两种可能的方法。

  1. 传统方法:计算整个训练集的平均值,并在发送到网络之前减去每个图像的固定平均值。以类似的方式处理标准差。
  2. 我发现tensorflow提供了一个函数tf.image.per_image_standardization,可以对单个图像进行归一化。

不知道哪种方式更合适?

最佳答案

这两种方式都是可能的,选择主要取决于您读取数据的方式。

  • 整个训练集当您可以将整个数据集一次性加载到 numpy 数组中时,标准化会很方便。例如,MNIST dataset通常会完全加载到内存中。当各个图像差异很大时,这种方式在收敛方面也是更可取的:两个训练图像,一个主要是白色,另一个主要是黑色,将具有非常不同的均值。

  • 每个图像当图像逐个或小批量加载时(例如从 TFRecord 加载),标准化很方便。当数据集太大而无法容纳在内存中时,这也是唯一可行的选择。在这种情况下,最好组织input pipeline in tensorflow并像图中的其他张量一样变换图像张量。我在 CIFAR-10 中看到这种标准化的准确性非常高,因此尽管存在前面提到的问题,但这是一种可行的方法。另请注意,您可以通过 batch normalization 减少负面影响.

关于python - 哪种是进行图像标准化的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47865695/

相关文章:

python - 如何在函数签名中引用 python 类属性的类型

python - 从 Pydev 使用 python 日志记录时出错

deep-learning - 计算出的损失是否与所有样本相关?

python - python 混合类应该只继承对象吗?

python - 隐藏 Maya python 插件文件

python - TensorFlow 专家组合

python - Tensorflow backprop 通过 rnn ValueError

python - Keras 中 LSTM 的时间分布式层和返回序列等

java - 人工神经网络输入理解

java - Node.js 与 Java - 计算密集型计算