nn.layernorm的认识
2026/4/27 10:23:36 网站建设 项目流程

LayerNorm — PyTorch 2.9 documentation

layernorm不是对通道进行归一化。而是对选定维度进行归一化。被选定的维度作为一个整体,计算出方差和均值然后进行对被选定维度进行归一化。

(整体归一化的意思就是,如果把[C, H, W]作为归一化维度,那么C*H*W 个元素来进行计算均值和方差,然后进行归一化。)

它的主要作用是将每层特征输入到激活函数之前进行标准化,使其转换为均值为0,方差为1的数据,从而避免数据落在激活函数的饱和区,减少梯度消失的问题。

LayerNorm 可以应用于神经网络的任何层,包括卷积层和循环层,通常放在激活函数之前。

Q:为什么公式是这样,而不是直接除以总和呢?

A:以前的归一化是x_i' = x_i / sum(x) ,即让所有元素综合为1.这种主要应用于生成概率分布,注意力权重等。而深度学习中的归一化,目标是为了 调整数据的整体分布,使其更加稳定(均值为0,标准差为1),其主要是为了

稳定神经网络训练、加速收敛、防止梯度问题

Q:layernorm归一化之后若不进行缩放偏移,则均值为0,标准差为1.这有什么意义呢,能确定它的范围吗?

pytorch中有个很神奇的规则就是: 如果写成layerNorm(dim) 其中dim是整数,则默认对最后一个维度进行归一化。

PyTorch 的底层规则:根据 PyTorch 的设计,当normalized_shape是一个整数时,它会被自动解释为一个仅包含该整数的列表,即normalized_shape = [dim]。这个列表指明了要对输入张量的最后len(normalized_shape)个维度进行归一化。

参考:

LayerNorm在CV与NLP中的应用与实现-CSDN博客

标准正态分布_百度百科

10分钟搞清楚为什么Transformer中使用LayerNorm而不是BatchNormNormalization技术 - 掘金

Build Better Deep Learning Models with Batch and Layer Normalization | Pinecone

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询