Tensorflow 在将数据馈送到ML/DL模型之前,数据的标准化有什么意义?

Tensorflow 在将数据馈送到ML/DL模型之前,数据的标准化有什么意义?,tensorflow,machine-learning,deep-learning,computer-vision,normalization,Tensorflow,Machine Learning,Deep Learning,Computer Vision,Normalization,我刚开始学习深度学习,并在处理时装MNIST数据集。 作为预处理X标签、训练图像和测试图像的一部分,将像素值除以255作为输入数据标准化的一部分 training_images = training_images/255.0 test_images = test_images/255.0 我知道这是为了将值缩小到[0,1],因为神经网络在处理这些值时效率更高。然而,如果我试图跳过这两行,我的模型预测某个特定的测试图像会完全不同。 为什么会发生这种情况?让我们看看这两种情况,并提供以下详细信息

我刚开始学习深度学习,并在处理时装MNIST数据集。 作为预处理X标签、训练图像和测试图像的一部分,将像素值除以255作为输入数据标准化的一部分

training_images = training_images/255.0
test_images = test_images/255.0
我知道这是为了将值缩小到[0,1],因为神经网络在处理这些值时效率更高。然而,如果我试图跳过这两行,我的模型预测某个特定的测试图像会完全不同。
为什么会发生这种情况?

让我们看看这两种情况,并提供以下详细信息

1。使用非规范化数据时:

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

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

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


如果图像未标准化,则输入像素的范围为[0255]。这些将产生巨大的激活值(如果您使用ReLU)。在向前传球之后,你将得到巨大的损失值和坡度

2。使用标准化数据:

通过将输入标准化,我们可以让网络更快地学习每个输入节点的最佳参数


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

如果图像未标准化,则输入像素的范围为[0255]。这些将产生巨大的激活值(如果您使用ReLU)。在向前传球之后,你将得到巨大的损失值和坡度。问了一个类似的问题,可能会有帮助。你是说在用非标准化的训练图像重新训练之后?