标签:nn 处理 BatchNormalization torch batch score 归一化 LayerNormalization
文章目录
这些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)
上述a就是我们的模型中某一层的数据,所以其维度代表的意思是(懂的都懂):
#[batch_size=2,seq_len=2,emb_size=3]
那么LayerNormalization是指:我们将我们这个batch中的2个数据,分别处理:
怎么处理呢?那就是在一个数据的内部,扁平化然后z-score标准化
(如下公式),然后处理回原来的形状。
我们以第一个数据为例:
1.扁平化
2.求其均值为1,标准差为0.816496580927726。
3.z-score公式带入
4.还原回原来的形状
这就是这个batch中第一个数据LayerNormalization的结果,第二个数据也是重复这个流程。
我们使用pytorch验证一下:
ln=nn.LayerNorm(3)#3表示最后一个维度的大小
ln(a)
完全正确!
BatchNormalization
b=torch.empty(2,3).random_(0,3)
print(b)
上述b就是我们的模型中某一层的数据,所以其维度代表的意思是(懂的都懂):
#[batch_size=2,feature_size=3]我们可以想象输入的是2个人的信息,这个信息由一个3维向量来表示,比如[身高,体重,胸围],我们要做分类问题。
那么BatchNormalization是指:我们将我们这个batch中的2个数据一起处理(前面是分别处理),这里是分别处理身高,体重和胸围。
即对不同人的身高,体重和胸围分别做z-score:
我们以身高为例,第一个人为2,第二个人为0,那么均值是1,标准差是1,所以带入z-score的那个公式,结果是[1,-1]。
其他依次类推。
bn=nn.BatchNorm1d(3)#最后一个维度的大小。
bn(b)
标签:nn,处理,BatchNormalization,torch,batch,score,归一化,LayerNormalization 来源: https://blog.csdn.net/qq_43391414/article/details/120802176
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。