pytorch标准化(Batch Normalize)中计算数据集的均值和方差

1,浅谈深度学习训练中数据规范化(Normalization)的重要性

为什么要Normalization? 简要来讲,在pytorch中,有些模型是通过规范化后的数据进行训练的,所以我们在使用这些预训练好的模型的时候,要注意在将自己的数据投入模型中之前要首先对数据进行规范化。

具体请参考 浅谈深度学习训练中数据规范化(Normalization)的重要性 - Oldpan的个人博客这篇文章讲得不错,值得好好看看。

简要的讲,BN层存在的意义(原因)在于:

随着网络的深度增加,每层特征值分布会逐渐的向激活函数的输出区间的上下两端(激活函数饱和区间)靠近,这样继续下去就会导致梯度消失。BN就是通过方法将该层特征值分布重新拉回标准正态分布,特征值将落在激活函数对于输入较为敏感的区间,输入的小变化可导致损失函数较大的变化,使得梯度变大,避免梯度消失,同时也可加快收敛。

其作用可以归纳为以下几点:

1,减少梯度消失,加快了收敛过程。

2,起到类似dropout一样的正则化能力,一定程度上防止过拟合。

3,放宽了一定的调参要求(

你可能感兴趣的:(Pytorch学习,pytorch,深度学习,人工智能)