Pytorch归一化方法讲解与实战:BatchNormalization、LayerNormalization、nn.BatchNorm1d和LayerNorm()

文章目录

这些Normalization的作用都是让数据保持一个比较稳定的分布,从而加速收敛。Batch Normalization 的处理对象是对一批样本, Layer Normalization 的处理对象是单个样本。不过,他们到底指的是什么呢?有的时候,讲解是多余的,实战一下,你就懂了:

talk is cheap,show me the code
import torch
import torch.nn as nn

LayerNormalization

LayerNormalization通常用于RNN网络或者处理句子的网络中,假设我们有如下数据

a=torch.empty(2,2,3).random_(0,3)
print(a)

Pytorch归一化方法讲解与实战:BatchNormalization、LayerNormalization、nn.BatchNorm1d和LayerNorm()
上述a就是我们的模型中某一层的数据,所以其维度代表的意思是(懂的都懂):

#[batch_size=2,seq_len=2,emb_size=3]

那么LayerNormalization是指:我们将我们这个batch中的2个数据,分别处理:

Pytorch归一化方法讲解与实战:BatchNormalization、LayerNormalization、nn.BatchNorm1d和LayerNorm()
怎么处理呢?那就是在一个数据的内部,扁平化然后z-score标准化(如下公式),然后处理回原来的形状。
Pytorch归一化方法讲解与实战:BatchNormalization、LayerNormalization、nn.BatchNorm1d和LayerNorm()

我们以第一个数据为例:
1.扁平化
Pytorch归一化方法讲解与实战:BatchNormalization、LayerNormalization、nn.BatchNorm1d和LayerNorm()
2.求其均值为1,标准差为0.816496580927726。
3.z-score公式带入
Pytorch归一化方法讲解与实战:BatchNormalization、LayerNormalization、nn.BatchNorm1d和LayerNorm()
4.还原回原来的形状
Pytorch归一化方法讲解与实战:BatchNormalization、LayerNormalization、nn.BatchNorm1d和LayerNorm()
这就是这个batch中第一个数据LayerNormalization的结果,第二个数据也是重复这个流程。

我们使用pytorch验证一下:

ln=nn.LayerNorm(3)#3表示最后一个维度的大小
ln(a)

Pytorch归一化方法讲解与实战:BatchNormalization、LayerNormalization、nn.BatchNorm1d和LayerNorm()
完全正确!

BatchNormalization

b=torch.empty(2,3).random_(0,3)
print(b)

Pytorch归一化方法讲解与实战:BatchNormalization、LayerNormalization、nn.BatchNorm1d和LayerNorm()
上述b就是我们的模型中某一层的数据,所以其维度代表的意思是(懂的都懂):

#[batch_size=2,feature_size=3]我们可以想象输入的是2个人的信息,这个信息由一个3维向量来表示,比如[身高,体重,胸围],我们要做分类问题。

那么BatchNormalization是指:我们将我们这个batch中的2个数据一起处理(前面是分别处理),这里是分别处理身高,体重和胸围。

即对不同人的身高,体重和胸围分别做z-score:
Pytorch归一化方法讲解与实战:BatchNormalization、LayerNormalization、nn.BatchNorm1d和LayerNorm()
我们以身高为例,第一个人为2,第二个人为0,那么均值是1,标准差是1,所以带入z-score的那个公式,结果是[1,-1]。

其他依次类推。

bn=nn.BatchNorm1d(3)#最后一个维度的大小。
bn(b)

Pytorch归一化方法讲解与实战:BatchNormalization、LayerNormalization、nn.BatchNorm1d和LayerNorm()


谢谢观看

上一篇:7.批训练


下一篇:[Pytorch系列-41]:卷积神经网络 - 模型参数的恢复/加载 - 搭建LeNet-5网络与MNIST数据集手写数字识别