Transform结构详解 + 手撕版本

Transform

下图是Transform 的整体架构,由decoder和encoder构成,下面分部分对Transform的结构进行分析 (下图来自于论文Attention is all you need)。
在这里插入图片描述

(论文链接https://arxiv.org/pdf/1706.03762.pdf)

1.Encoder

Encoder 主要是用来对句子的输入进行编码,下面用 ”我爱学习“ 这句话为例子解析编码过程。

首先是以词向量的形式进行输入,并且这里的词向量加入了positional encoding,也就是位置信息,来标定 ’我‘ ’爱‘ ’学‘ ’习‘ 这四个词向量的位置。

在这里插入图片描述

下一步就是将融合了位置信息的词向量输入到self-Attention 中进行编码

1.1 Self-Attention

  • Self-Attention 的过程如下图所示

在这里插入图片描述

  • 以第一个向量为例,对它进行变换生成Q,K,V。首先Q输入到第一个Attention中,然后分别和所有的K生成权重,然后根据权重对所有的V加权求和得到第一个Attention输出,其他的Attention类似,最终可以得到四个红色的向量。
  • 注:图中只画出了第一个Attention的输入关系,其他的类似。
  • 在输出红色的向量之后,红色的向量还要再加上原来的输入向量,然后再进行Norm操作,得到黄色的向量。

1.2 Multi-Head Attention

  • 所谓多头注意力机制,也就是多次进行自注意力机制编码,如下图所示。
    在这里插入图片描述

1.3 Feed Forward

  • FF层比较简单,即为将Muti-head Attention 输出的向量通过全连接层,并与自己相加。
    在这里插入图片描述

2 Decoder

2.1 Masked-Multi-head Attention

在这里插入图片描述

  • Masked 的意思即为在产生第n个编码的时候只能考虑第n个和第n个之前的信息,不能考虑之后的信息。

  • 注:只画出了V的输入关系。

2.2 Cross Attention

在这里插入图片描述

  • 右边绿色的向量为解码器的输入,在机器翻译任务中就是,要翻译成的语言比如说’I love learning’ ,0表示开始产生。Cross Attention 就是将decoder的编码作为Q和将Encoder的输出作为K,V进行Multi-Head Self-Attention。

3 Decoder 训练过程

  • Decoder在训练过程中是并行进行的,也就是说‘I love learning’ 是同步输入解码器的,输入的是标准答案‘I love learning’
  • 在inference过程中,不是并行需要一个一个的输出,先产生 I, 在根据I产生love ,当然可能产生的不是love而是like。

4 手撕代码

import torch
import torchvision


class Layernorm_m(torch.nn.Module):
    def __init__(self):
        super(Layernorm_m,self).__init__()
        pass

    def forward(self,x):
        mean = torch.mean(x, dim = 2)
        std  = torch.std(x, dim = 2)

        return (x - mean[:, :, None]) / std[:,:,None]


class Attention(torch.nn.Module):
    def __init__(self):
        super(Attention,self).__init__()
        self.Wq = torch.nn.Linear(512,512,bias= False)
        self.Wk = torch.nn.Linear(512, 512,bias= False)
        self.Wv = torch.nn.Linear(512, 512,bias= False)
        self.fc = torch.nn.Linear(512, 512,bias= False)
        self.layernorm = Layernorm_m()

    def forward(self,x):
        res = x

        q = self.Wq(x)
        k = self.Wk(x)
        v = self.Wv(x)

        #q* k.T * v
        A = q.bmm(k.permute(0,2,1)) / torch.sqrt(torch.tensor(512,dtype = torch.float32))
        A = torch.softmax(A, dim = -1)
        x = A.bmm(v)
        x = self.fc(x)

        return self.layernorm(x + res)

class PoswiseFeedForwardNet(torch.nn.Module):
    def __init__(self):
        super(PoswiseFeedForwardNet,self).__init__()
        self.fc = torch.nn.Linear(512,512)
        self.relu = torch.nn.ReLU()
        self.fc2 = torch.nn.Linear(512,512)
        self.layerNorm = Layernorm_m()

    def forward(self,x):
        res = x
        x = self.fc(x)
        x = self.relu(x)
        x = self.fc2(x)

        return self.layerNorm(x + res)

class Encoder(torch.nn.Module):
    def __init__(self):
        super(Encoder,self).__init__()
        self.attention = Attention()
        self.ffn = PoswiseFeedForwardNet()

    def forward(self,x):
        x = self.attention(x)
        x = self.ffn(x)
        return x


x = torch.randn((4,16,512))

encoder = Encoder()
x = encoder(x)
print(x)
pass
DBY9909
关注 关注
  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前沿系列--Transform架构[架构分析+代码实现]
`or 1 or 不正经の泡泡
12-22 1520
Transform这玩意的大名我想就不用我多说了。那么我们今天要做的就是对Transform架构进行了解,并且使用Pytorch进行一个编写实现。(其实这边博文的话很早之前就差不多写好了,但是话我本人喜欢做一个系列就一直没发布)由于描述的是一种架构,因此好消息是,对于新的理论部分没有啥要求。但是坏消息是,需要一定的前期知识储备。
RegNet——颠覆常规神经网络认知的卷积神经网络(网络结构详解+详细注释代码+核心思想讲解)——pytorch实现
爱吃橘子的小翟
01-02 3947
RegNet的博客的准备我可谓是话费了很多的时间,参考了诸多大佬的资料,主要是网上对于这个网络的讲解有点少,毕竟这个网络很新。网上可以参考的资料太少,耗费了相当多的时间,不过一切都是值得的,毕竟学完之后,才发现它真的是个超级无敌吊炸天的CNN卷积神经网络,跟他比起来之前常规的神经网络完全都是弟弟!好的 废话少说,我们先来简单了解一下regnet的思想。原论文名称:Designing Network Design Spaces 原论文下载地址:https://arxiv.org/abs/2003.13678.
一文搞懂 Transformer(总体架构 & 三种注意力层)
2401_84033492的博客
05-25 9498
本文将从Transformer的本质、Transformer_的原理_、_Transformer的应用__三个方面,带您一文搞懂Transformer(总体架构 & 三种注意力层)。节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。针对大模型技术趋势、大模型落地项目经验分享、新如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。
三分钟了解自动驾驶中视觉Transform应用:视觉Transoform自动驾驶综述
最新发布
python123456_的博客
08-06 1587
Transform架构是一项突破性创新,通过利用注意力机制进行序列处理,标志着从传统循环层的转变。它由两个主要部分组成:编码器和解码器。编码器通过多头注意力和前馈网络处理输入嵌入,两者都通过层规范化和残差连接得到增强。解码器结构与编码器相似,也聚焦于编码器输出,生成最终的输出序列。位置编码在此架构中至关重要,因为它们使模型能够识别序列顺序,这一关键特性是Transform本身无法辨别词序的。此功能对于把握语言上下文至关重要,使得位置编码成为Transform设计的基本组成部分。
Transform【变形】属性
精彩人生
02-11 6216
来源:http://www.w3cplus.com/content/css3-transform 今天开始我们一起来学习有关于CSS3制作动画的几个属性:变形(transform)、转换(transition)和动画(animation)等更高级的CSS3技术。本文主要介绍的是这三个属性之中的第一个──变形transformTransform字面上就是变形,改变的意思。在CSS3中tr
Transform详解
热门推荐
霜叶的博客
08-18 10万+
1、Transform简介 Transformer中抛弃了传统的CNN和RNN,整个网络结构完全是由Attention机制组成。更准确地讲,Transformer由且仅由self-Attenion和Feed Forward Neural Network组成。一个基于Transformer的可训练的神经网络可以通过堆叠Transformer的形式进行搭建,作者的实验是通过搭建编码器和解码器各6层,总共12层的Encoder-Decoder,并在机器翻译中取得了BLEU值得新高。 2、Transform结构
transform详解
weixin_41012399的博客
08-01 871
transform的attention也是需要用权重代表重要程度,输入*权重=输出,再用输出和label计算loss,transform的权重是通过自注意力机制(Q,K,V)计算得到的。transformer:输入,位置编码,编码器(attention,前馈网络),解码器(attention,前馈网络,mask),loss,反向传播,优化器。通过embedding层得到三个token的embedding,假定分别为:[1, 0, 1, 0],[0, 2, 0, 2],[1, 1, 1, 1]
简单有趣的轻量级网络MobileNets v1 、MobileNets v2、MobileNets v3(可以直接替换自己数据集)(网络结构详解+详细注释代码+核心思想讲解)——pytorch实现
爱吃橘子的小翟
04-14 981
这期博客我们就开始学习一个比较简单有趣的轻量级卷积神经网络 MobileNets系列MobileNets v1 、MobileNets v2、MobileNets v3。 之前出现的卷积神经网络,不论是Alexnet,还是VGG,亦或者是Resnet都存在模型参数量较大,对算力要求较高,等等各种原因,无法在嵌入式设备商运行,这些模型都一味追求精度的提升,对于模型的落地没考虑,因此模型轻量级的研究也作为了一个重要
简单有趣的变形金刚网络(VIT) Vision Transformer(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑(网络结构详解+详细注释代码+核心思想讲解)——pytorch实现
爱吃橘子的小翟
05-10 3889
论文题目: An Image Is Worth 16x16 Words: Transformers For Image Recognition At Scale 原论文下载链接:https://arxiv.org/abs/2010.11929 原论文对应源代码:mirrors / google-research / vision_transformer · GitCode Transformer最先应用于在NIP领域,并且取得了巨大的成功,事实上NIP和CV作为深度学习应用最广的两个领域,两者的
简单有趣的轻量级网络 Shufflenet v1 、Shufflenet v2(可以直接替换自己数据集)-直接放置自己的数据集就能跑(网络结构详解+详细注释代码+核心思想讲解)——pytorch实现
爱吃橘子的小翟
04-30 1224
这期博客咱们来学习一下Shufflenet系列轻量级卷积神经网络,Shufflenet v1 、Shufflenet v2。首先学习一下,Shufflenet v1网络:论文下载链接:Shufflene系列轻量级卷积神经网络由旷世提出,也是非常有趣的轻量级卷积神经网络,它提出了通道混合的概念,改善了分组卷积存在的问题,加强各组卷积之间的特征交互和信息交流,在改善模型的特征提取方式的同时,增强特征提取的全面性,如下图所示: 当然上面说的很抽象,图像也很抽象,具体的实现过程如下图所示:
简单有趣的轻量级网络 Efficientnet(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区(网络结构详解+详细注释代码+核心思想讲解)——pytorch实现
爱吃橘子的小翟
05-03 2515
这期博客我们来学习一下Efficientnet网络,属于NAS系列中最优秀的轻量级网络之一,通过NAS搜索的方式确定最佳的网络结构。之前的神经网络的宽度深度,输入图像的分辨率,是怎么获得的呢,说白了就是经验,研究人员通过无数的设计经验获得的,但是网络的发展不可能一直通过经验,如何获取最佳的结构是大家研究的问题。Efficientnet论文下载地址:https://arxiv.org/abs/1905.11946在Efficientnet出现之前,大家都在纠结对于提高网络性能的三点要求:
CSS3 2D Transform 详细讲解
ljinkai_ljk的专栏
11-19 1344
CSS3 2D Transform 详细讲解 十一月 18, 2013 by 遇见sharon 在一个二维或三维空间,元素可以被扭曲、移位或旋转。只不过2D变形工作在X轴和Y轴,也就是大家常说的水平轴和垂直轴;而3D变形工作在X轴和Y 轴之外,还有一个Z轴。这些3D变换不仅可以定义元素的长度和宽度,还有深度。我们将首先讨论元素在2D平面如何变换,然后我们在进入3D变换的讨论。
Transform模型详解
qq_47564006的博客
01-22 2577
Transformer模型解析
Transforms架构解析
Friends
06-06 457
并行运算,加快运算速度, 同时意味着需要更多GPU,用空间换时间。这也是未来发展趋势对于长文本翻译等效果很好,解决了RNN长句翻译效果差问题。
< Unity 3D专栏 >Transform结构
御剑江湖的专栏
12-02 1770
看到Transform结构图,记录下来:
Transformer架构解析
weixin_46556352的博客
04-27 594
Transformer架构解析
transform全解
qq_44906900的博客
10-04 1129
transform 全解 一、四个常用功能 位移:translate 缩放:scale 旋转:rotate 倾斜:skew 1. 位移 translate 向 X 轴方向移动:translateX() .demo{ transform:translateX(6px); } 向 Y 轴方向移动:translateY() .demo{ transform:translateY(50%); /* 向Y方向移动(自身的widt
Unity3d的Transform结构
秋风扶柳笛的专栏
10-14 3049
2011-9-8 17:26:25 上传 下载附件 (111.78 KB)
写文章

热门文章

  • javaee课程作业管理系统大作业 8433
  • Transform结构详解 + 手撕版本 6953
  • 基于Mysql+Servlet+JSP的作业管理系统 4424
  • Diffusion核心原理以及核心代码部分详解 1565
  • 将普通web项目改为Maven工程 1535

分类专栏

  • Diffusion 相关技术 1篇
  • 可见光红外行人重识别 2篇
  • 行人重识别文章阅读笔记 1篇

最新评论

  • 2024_CVPR_IDKL

    Coraline-: 啊啊啊,多写点

  • 2023_arxiv_VI-Diff

    m0_70624260: 复现出来效果怎么样啊

  • 2023_arxiv_VI-Diff

    DBY9909: 需要自己写一下处理数据集的代码

  • 2023_arxiv_VI-Diff

    m0_70624260: 想问一下博主这篇论文的代码跑通了吗

  • javaee课程作业管理系统大作业

    秋风——落叶: 你的能运行?为什么我运行后springboot-Demo在类APIController那段代码里面会显示找不到类RegisterRequest

最新文章

  • HyperDreamBooth: HyperNetworks for Fast Personalization of Text-to-Image Models
  • Diffusion_paper_core_code
  • 2024_CVPR_IDKL
2024年9篇
2022年1篇
2020年5篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家邵阳玻璃钢仿铜雕塑佳木斯火烈鸟玻璃钢雕塑公司发光动物玻璃钢雕塑工艺玻璃钢雕塑制作施工商场玻璃钢公仔雕塑定制南通玻璃钢雕塑设计方案宁德玻璃钢果蔬雕塑河南秋季商场美陈市场价烟台玻璃钢人物雕塑浮雕抗金文天祥玻璃钢雕塑玻璃钢雕塑手糊步骤长宁区进口玻璃钢雕塑哪家好乌鲁木齐玻璃钢雕塑浮雕厂新密校园玻璃钢雕塑定做厂家巴彦淖尔玻璃钢卡通雕塑动漫上海大型商场创意商业美陈多少钱益阳玻璃钢浮雕人物山水雕塑济南玻璃钢商场美陈加工上海玻璃钢主题雕塑制作晋城肖像玻璃钢雕塑宿州烤漆玻璃钢雕塑开远市玻璃钢雕塑价格辽源玻璃钢雕塑制造厂家玻璃钢雕塑清洁视频淮北玻璃钢雕塑定做厂家黔东南玻璃钢雕塑厂湖北景区玻璃钢雕塑销售厂家商场吊饰美陈艺术玻璃钢雕塑电话北京常见商场美陈生产公司香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化