网站规划与建设的案例分析,涿州做网站的,烟台装修行业网站建设方案,wordpress换域名空间文章目录 为什么要NormalizationBatchNormLayerNormtorch代码示例 学习神经网络归一化时#xff0c;文章形形色色#xff0c;但没找到适合小白通俗易懂且全面的。学习过后#xff0c;特此记录。 为什么要Normalization
当输入数据量级极大或极小时#xff0c;为保证输出数… 文章目录 为什么要NormalizationBatchNormLayerNormtorch代码示例 学习神经网络归一化时文章形形色色但没找到适合小白通俗易懂且全面的。学习过后特此记录。 为什么要Normalization
当输入数据量级极大或极小时为保证输出数据有效参数必需被训练到一个极小或极大的区间而这对初始化来说非常困难且多层网络链式法则求导会导致梯度消失或爆炸的问题。
Reference神经网络为什么要归一化 归一化的具体计算过程CSDN博客
BatchNorm
BN适用于大多数Dataframe样式的常规数据。 BN对每个特征进行归一化如下图分别计算身高归一化后的数据、体重归一化后的数据、年龄归一化后的数据。好理解。 LayerNorm
对于NLP数据不适用于BN。 BN的逻辑是每个变量来自于某一特定分布虽然每次只计算一个batch内的数据但第一个batch如前64名同学的身高和第二个batch后64名同学的身高大概率来自同样的分布。 而对文本数据来说所有句子的第一个词不一定来自同一分布第二个词也是。每个句子的长度也不同对句子末尾几个词作BN就相当于对最长句子的最后一个词和一堆padding值作BN没有意义。 这里就要用到LN即对每条样本作归一化即“横着”归一化。
torch代码示例
BatchNorm: 参考pytorch BatchNorm参数详解计算过程
# BatchNorm
import torch.nn as nn
Class Net:def __ init__():self.bn nn.BatchNorm1d(20,affineTrue)passdef forward(x):# x:(N,L)对L个变量分别进行normalizationout self.ln(x)# out: (N,L)LayerNorm: 参考pytorch 层标准化 LayerNorm 的用法
# LayerNorm
import torch.nn as nn
Class Net:def __ init__():self.ln nn.LayerNorm(W,elementwise_affineTrue) # 只对最后一个维度self.ln nn.LayerNorm([H,W],elementwise_affine True) # 对最后两个维度即均值、方差一起求拉伸成一个维度passdef forward(x):# x: (N, H ,W)对最后几个维度进行normalizationout self.ln1(x)out self.ln2(x)# out: (N, seq_len, emb_dim)归一化不改变向量维度