LayerNorm层归一化

2023-12-19 16:04
文章标签 归一化 layernorm

本文主要是介绍LayerNorm层归一化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

LayerNorm(Layer Normalization)是一种常用的归一化技术,用于神经网络模型中的层级归一化操作。它在每个样本的每个特征维度上进行归一化,使得每个特征的均值为0,方差为1,从而有助于提高模型的训练效果和泛化能力

LN是针对自然语言处理领域提出的,例如像RNN循环神经网络

与 Batch Normalization (批归一化)既有相似之处又有不同:从公式上看,都是减去均值除以标准差,也存在两个可训练的参数 gamma 和 beta

但是,BN 是对一个 batch 数据的每个 channel 进行 Norm 处理,LN是对单个数据的指定维度进行Norm处理,与batch无关。而且在BN训练时需要累计moving_mean和moving_var两个变量,LN不需要累计

所以说,,LayerNorm 是在每个样本的特征维度上进行归一化,而不是在批次维度上。这意味着在LayerNorm中,每个样本都有自己的均值和方差

用法:

torch.nn.LayerNorm(normalized_shape,eps=1e-05,elementwise_affine=True)

其中,参数normalized_shape可以指定想要Norm的维度,但是指定的维度必须是要从最后一维开始的,比如:数据的shape是[4,2,3],那么normalized_shape可以是[3](最后一维上进行Norm处理) ,也可以是[2,3](Norm最后两个维度),也可以是 [4,2,3] (对整个维度进行Norm),但是不能是[2] 或[4,2],否则会报错

实现:

import torch
import torch.nn as nndef layer_norm_process(feature:torch.Tensor,beta=0,gamma=1,eps=1e-5):var_mean = torch.var_mean(feature,dim=-1,unbiased=False)# 均值mean = var_mean[1]# 方差std = var_mean[0]# layer norm processfeature = (feature - mean[...,None]) / torch.sqrt(var[...,None] + eps)feature = feature * gamma + betareturn feature

调用:

def main():t = torch.rand(4,2,3)# 仅在最后一个维度上做norm处理# 调用官方实现的layerNormnorm = nn.LayerNorm(normalized_shape = t.shape[-1],eps=1e-5)t1 = norm(t)# 上述自定义的LayerNorm处理t2 = layer_norm_process(t,eps=1e-5)print("t1:\n",t1)print("t2:\n",t2)if __name__ = '__main__':main()

代码中的 t.shape[-1] 指的是数据的最后一个维度

注意:beta最初初始化为 0,gamma最初初始化为1,这两个参数后面通过训练慢慢学习得到

优点:

  • 不依赖于批次大小,因此在训练和推理阶段都可以使用
  • 在处理小批次数据时,相比于BN批归一化,LayerNorm 更稳定
  • 由于每个样本都有自己的均值和方差,可以更好地适应不同样本之间的差异

这篇关于LayerNorm层归一化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/512819

相关文章

【数据分享】2000—2023年我国省市县三级逐月归一化植被指数(NDVI)数据(Shp/Excel格式)

之前我们分享过2000—2023年逐月归一化植被指数(NDVI)栅格数据(可查看之前的文章获悉详情),该数据来源于NASA定期发布的MOD13A3数据集!很多小伙伴拿到数据后反馈栅格数据不太方便使用,问我们能不能把数据处理为更方便使用的Shp和Excel格式的数据! 我们特地对数值在-0.2—1之间的NDVI栅格数据进行了处理,将2000-2023年逐月的归一化植被指数栅格分别按照我国省级行政边

深度学习速通系列:归一化和批量归一化

在深度学习中,归一化和批量归一化是两种常用的技术,它们有助于提高模型的训练效率和性能。下面详细解释这两种技术: 归一化(Normalization) 归一化是指将数据的数值范围调整到一个特定的区间,通常是[0, 1]或者[-1, 1],或者使其具有零均值和单位方差。这样做的目的是减少不同特征之间的数值范围差异,使得模型训练更加稳定和高效。 常见的归一化方法包括: 最小-最大归一化(Min

【无标题】【Datawhale X 李宏毅苹果书 AI夏令营】批量归一化

1、批量归一化的作用 批量归一化(Batch Normalization,BN)的把误差曲面变得平滑,使训练能够得到快速收敛; 训练过程的优化:使用自适应学习率等比较进阶的优化训练方法; 训练对象的优化:批量归一化可以改变误差表面,让误差表面比较不崎岖 参数 w i w_i wi​是指训练参数或者训练的目标 1.1 特征归一化 当输入的特征,每一个维度的值,它的范围差距很大的时候,我们就可能

Datawhale X 李宏毅苹果书 AI夏令营 进阶 Task3-批量归一化+卷积神经网络

目录 1.批量归一化1.1 考虑深度学习1.2 测试时的批量归一化1.3 内部协变量偏移 2.卷积神经网络2.1 观察 1:检测模式不需要整张图像2.2 简化 1:感受野2.3 观察 2:同样的模式可能会出现在图像的不同区域2.4 简化 2:共享参数2.5 简化 1 和 2 的总结2.6 观察 3:下采样不影响模式检测2.7 简化 3:汇聚2.8 卷积神经网络的应用:下围棋 1.

Pytorch中不同的Norm归一化详细讲解

在做项目或者看论文时,总是能看到Norm这个关键的Layer,但是不同的Norm Layer具有不同的作用,准备好接招了吗?(本文结论全部根据pytorch官方文档得出,请放心食用) 一. LayerNorm LayerNorm的公示如下: y = x − E [ x ] Var ⁡ [ x ] + ϵ ∗ γ + β y=\frac{x-\mathrm{E}[x]}{\sqrt{\op

波导模式分析-归一化截止波数

归一化截止波数是指波导或传输线中的截止波数相对特定参考波数的归一化值。通常在波导分析中,它通过与自由空间波数的比值来表示。你可以根据给定的截止频率来计算归一化截止波数。 截止波数: 对于某一传播模式(如TE、TM模式),波导中的截止波数与截止频率之间的关系是: 其中: 是波导中的截止波数是波导中的截止频率是相应模式下的相速度 相速度: 相速度(Phase Velocity)是在波动

CV-CNN-2015:GoogleNet-V2【首次提出Batch Norm方法:每次先对input数据进行归一化,再送入下层神经网络输入层(解决了协方差偏移问题)】【小的卷积核代替掉大的卷积核】

GoogLeNet凭借其优秀的表现,得到了很多研究人员的学习和使用,因此GoogLeNet团队又对其进行了进一步地发掘改进,产生了升级版本的GoogLeNet。 GoogLeNet设计的初衷就是要又准又快,而如果只是单纯的堆叠网络虽然可以提高准确率,但是会导致计算效率有明显的下降,所以如何在不增加过多计算量的同时提高网络的表达能力就成为了一个问题。 Inception V2版本的解决方案就是修

GEE案例——基于光谱混合分析(SMA)的归一化差异水分指数(NDWFI)的水体监测

简介 本研究旨在开发一种新型水指数,以提高利用卫星图像感知和监测 SW 的能力,同时避开大量取样和复杂建模等劳动密集型技术,从而改进大规模 SW 测绘。 具体目标如下 (a) 引入一种新的水体指数,该指数的明确设计目的是改进对次要水体和易变水体的提取,使其非常适合于大规模、长期的水体分布图绘制;(b) 调查该新指数在阐明水体动态时空模式方面的可行性,从而推进对跨时空水体分布变化的理解;(c) 通

【机器学习】【数据预处理】数据的规范化,归一化,标准化,正则化

数据的规范化,归一化,标准化,正则化,这几个破词整得我头晕,首先这些词就没规范好,对数据做实验更晕,网上狂搜一阵后,发现数据归一化,标准化,正则化,还是有差别 数据规范化    一种是针对数据库的解释    规范化理论把关系应满足的规范要求分为几级,满足最低要求的一级叫做第一范式(1NF),在第一范式的基础上提出了第二范式(2NF),在第二范式的基础上又提出了第三范式(3NF),以后又提出

Layer Normalization(层归一化)里的可学习的参数

参考pyttorch官方文档: LayerNorm — PyTorch 2.4 documentation 在深度学习模型中,层归一化(Layer Normalization, 简称LN)是一种常用的技术,用于稳定和加速神经网络的训练。层归一化通过对单个样本内的所有激活进行归一化,使得训练过程更加稳定。 关于层归一化是否可训练,其实层归一化中确实包含可训练的参数。具体来说,层归一化会对激活值