首页 > 其他分享 >Transformer中的layer norm(包含代码解释)

Transformer中的layer norm(包含代码解释)

时间:2024-05-17 11:08:23浏览次数:19  
标签:dim Transformer torch layer embedding var norm mean

https://blog.csdn.net/weixin_42596778/article/details/134848578

 

layerNorm的代码实现:

import torch

# 1.使用torch的layer norm来进行操作,然后看一下ln后的矩阵是什么样子
# 创建了一个2*3*4的随机矩阵
batch_size, seq_size, dim = 2, 3, 4
embedding = torch.randn(batch_size, seq_size, dim)
print("embedding:", embedding)
# 创建一个LayerNorm层
layer_norm = torch.nn.LayerNorm(dim, elementwise_affine=False)
# 进行LayerNorm操作
print("layer_norm: ", layer_norm(embedding))

# 2.自己手动来对最后一个维度进行计算,如果和上面的结果一样,说明layernorm的计算和我们的计算是一样的
eps: float = 0.00001

# 计算了embedding张量在最后一个维度上的均值,并将结果存储在变量mean中。
# dim=(-1):这个参数指定了要在哪个维度上计算均值。在这里,-1表示最后一个维度,所以这个函数会计算embedding张量在最后一个维度上的均值。
mean = torch.mean(embedding[:, :, :], dim=(-1), keepdim=True)
print("mean:", mean)

# 计算了embedding张量在最后一个维度上的方差,并将结果存储在变量var中
var = torch.square(embedding[:, :, :] - mean).mean(dim=(-1), keepdim=True)
print("var", var)

# 对嵌入张量embedding进行标准化(或称为归一化)的操作
# torch.sqrt(var + eps),这部分代码首先计算了方差张量var的平方根,然后加上一个非常小的常数eps(通常用于防止除以零的错误)。这个操作是缩放的一部分,它根据数据的方差来调整数据的大小
print("y_custom: ", (embedding[:, :, :] - mean) / torch.sqrt(var + eps))

如上,自己实现的layerNorm和 torch.nn.LayerNorm的 实现结果一致;

 

标签:dim,Transformer,torch,layer,embedding,var,norm,mean
From: https://www.cnblogs.com/xiaochouk/p/18197491

相关文章

  • Transformers 加速的一些常用技巧
    前言 本文介绍了一些Transformers常用的加速策略。本文转载自DeephubImba仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。CV方向的准研究生们,未来三年如何度过?招聘高光谱图像、语义分割、di......
  • LSTM卷土重来!xLSTM:一举超越Mamba、Transformer!
    前言 LSTM:这次重生,我要夺回Transformer拿走的一切。本文转载自新智元仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。CV方向的准研究生们,未来三年如何度过?招聘高光谱图像、语义分割、diffu......
  • 万事通,专精部分领域的多功能 Transformer 智能体
    介绍我们很高兴分享“万事通”(JackofAllTrades,简称JAT)项目,该项目旨在朝着通用智能体的方向发展。该项目最初是作为对Gato(Reed等,2022年)工作的公开复现启动的,Gato提出训练一种能够执行视觉与语言以及决策任务的Transformer。于是我们首先构建了Gato数据集的开放......
  • Transformers 加速的一些常用技巧
    Transformers是一个强大的架构,但模型因其采用的自注意力机制,虽然能够有效地处理序列数据并捕获长距离依赖关系,但同时也容易导致在训练过程中出现OOM(OutofMemory,内存不足)或者达到GPU的运行时限制。主要是因为参数数量庞大:Transformer模型通常包含大量的参数,尤其是在模型层面......
  • 经典译文:Transformer--Attention Is All You Need
    经典译文:Transformer--AttentionIsAllYouNeed来源  https://zhuanlan.zhihu.com/p/689083488 本文为Transformer经典论文《AttentionIsAllYouNeed》的中文翻译:https://arxiv.org/pdf/1706.03762.pdf注意力满足一切[email protected]......
  • Outrageously Large Neural Networks The Sparsely-Gated Mixture-of-Experts Layer
    目录概MoE训练ShazeerN.,MirhoseiniA.,MaziarzK.,DavisA.,LeQ.,HintonG.andDeanJ.Outrageouslylargeneuralnetworks:Thesparsely-gatedmixture-of-expertslayer.ICLR,2017.概Mixture-of-Experts(MoE).MoE通过一gatingnetwork选择不同的exp......
  • SciTech-BigDataAIML-Tensorflow-Keras API-Layers的API
    https://keras.io/api/layers/KeraslayersAPILayersarethebasicbuildingblocksofneuralnetworksinKeras.Alayerconsistsofatensor-intensor-outcomputationfunction(thelayer'scallmethod)andsomestate,heldinTensorFlowvariables(th......
  • failed to register layer: ApplyLayer exit status 1 stdout: stderr: archive/tar:
    系统:麒麟V10处理器:飞腾2000,aarch64原因:安装算能,TPU-mlir环境产生 官方教程地址:2.开发环境配置—TPU-MLIR0.7文档(sophgo.com)从DockerHub https://hub.docker.com/r/sophgo/tpuc_dev 下载所需的镜像:dockerpullsophgo/tpuc_dev:latest 产生错误 sia......
  • pdf.js源码分析-textLayer中的坐标计算
    在pdf.js中显示pdf内容和选择pdf文字属于不同的层,一个是canvas绘制,一个是使用dom进行布局,那么接下来先看一下在textLayer中的文字节点div是怎么计算每段文字的布局位置的吧。首先找到pdf.js源码中的text_layer.js文件,然后得到下面方法appendText方法,下面的解释是在字体没有发生旋......
  • Fighting EX Layer
    https://www.3dmgame.com/news/201806/3735423.html      ......