本文选自:365天深度学习训练营 (免费辅导
、免费咨询
)
归一化
与标准化
是特征缩放的两种形式,其作用是:
归一化是将数据“拍扁”统一到区间(仅由极值决定),而标准化是更加“弹性”和“动态”的,和整体样本的分布有很大的关系
归一化
:把数变为(0,1)之间的小数;缩放仅仅跟最大、最小值的差别有关。标准化
:将数据按比例缩放,使之落入一个小的特定区间;缩放与每个点都有关一般来说用的是min-max归一化,缩放到0-1之间,即:
对于图片来说,由于max是255,min是0,也就是直接除以255就可以完成归一化。
代码实现:
# 将像素的值标准化至0到1的区间内。
train_images, test_images = train_images / 255.0, test_images / 255.0
参考实例: 深度学习100例-卷积神经网络(CNN)实现mnist手写数字识别 | 第1天
为什么要进行归一化:
不归一化处理时 ,如果特征值较大时,梯度值也会较大,特征值较小时,梯度值也会较小。在模型反向传播时,梯度值更新与学习率一样,当学习率较小时,梯度值较小会导致更新缓慢,当学习率较大时,梯度值较大会导致模型不易收敛,因此为了 使模型训练收敛平稳
,对图像进行归一化操作,把不同维度的特征值调整到相近的范围内,就可以采用统一的学习率加速模型训练
将数据变换成均值为0,标准差为1的分布(但不一定为正态):
代码实现:
transforms.Normalize(mean = (0.485, 0.456, 0.406), std = (0.229, 0.224, 0.225))
为什么要进行标准化:
提升模型的泛化能力。
本文参考链接: