【问题标题】:What is the significance of normalization of data before feeding it to a ML/DL model?在将数据输入 ML/DL 模型之前,对数据进行标准化有什么意义?
【发布时间】:2020-09-18 13:01:59
【问题描述】:

我刚开始学习深度学习,正在使用 Fashion MNIST 数据集。 作为 X-labels、训练和测试图像预处理的一部分,将像素值除以 255 作为输入数据归一化的一部分。

training_images = training_images/255.0
test_images = test_images/255.0

我知道这是为了将值缩小到 [0,1],因为神经网络在处理这些值时效率更高。但是,如果我尝试跳过这两行,我的模型会为特定的 test_image 预测完全不同的东西。 为什么会这样?

【问题讨论】:

  • 如果图像没有被归一化,输入像素的范围是 [ 0 , 255 ]。这些将产生巨大的激活值(如果您使用的是 ReLU)。在前向传播之后,你最终会得到一个巨大的损失值和梯度。
  • stats.stackexchange.com/questions/211436/… 提出了类似的问题,可能会有所帮助。
  • 你的意思是用非标准化训练图像重新训练后?

标签: tensorflow machine-learning deep-learning computer-vision normalization


【解决方案1】:

让我们通过以下详细信息来看看这两种情况。

1.使用未标准化的数据:

由于您的网络的任务是学习如何通过一系列线性组合和非线性激活来组合输入,因此与每个输入相关的参数将以不同的尺度存在。

不幸的是,这可能会导致一个尴尬的损失函数拓扑,它更加强调某些参数梯度。

或者在评论中提到的 Shubham Panchal 的简单定义。

如果图像未标准化,则输入像素的范围为 [ 0 , 255 ]。这些将产生巨大的激活值(如果您使用的是 ReLU)。在前向传播之后,你最终会得到一个巨大的损失值和梯度。

2。使用标准化数据:

通过将我们的输入标准化为标准规模,我们允许网络更快地学习每个输入节点的最佳参数。

此外,确保我们的输入大致在 -1 到 1 的范围内是有用的,以避免与浮点数精度相关的奇怪的数学伪影。简而言之,计算机在对非常大或非常小的数字执行数学运算时会失去准确性。此外,如果您的输入和目标输出与典型的 -1 到 1 范围完全不同,那么您的神经网络的默认参数(即学习率)可能不适合您的数据。在图像的情况下,像素强度范围受 0 和 1 的限制(均值 =0 和方差 =1)。

【讨论】:

    猜你喜欢
    • 2019-07-30
    • 2020-10-15
    • 1970-01-01
    • 2019-05-24
    • 2018-08-16
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    相关资源
    最近更新 更多