当前位置: 首页 > news >正文

13.编码器的结构

从入门AI到手写Transformer-13.编码器的结构

  • 13.编码器的结构
  • 代码

整理自视频 老袁不说话 。

13.编码器的结构

T r a n s f o r m e r E n c o d e r : 输入 [ b , n ] TransformerEncoder:输入[b,n] TransformerEncoder:输入[b,n]

  • E m b e d d i n g : − > [ b , n , d ] Embedding:->[b,n,d] Embedding:>[b,n,d]
  • P o s i t i o n a l E n c o d e r : − > [ b , n , d ] PositionalEncoder:->[b,n,d] PositionalEncoder:>[b,n,d]
  • D r o p o u t : − > [ b , n , d ] Dropout:->[b,n,d] Dropout:>[b,n,d]
  • E n c o d e r B l o c k : [ b , n , d ] − > [ b , n , d ] EncoderBlock:[b,n,d]->[b,n,d] EncoderBlock:[b,n,d]>[b,n,d] 重复N次
    • M u l t i h e a d A t t e n t i o n : 3 ∗ [ b , n , d ] − > [ b , n , d ] MultiheadAttention:3*[b,n,d]->[b,n,d] MultiheadAttention:3[b,n,d]>[b,n,d]
    • D r o p o u t : [ b , n , d ] − > [ b , n , d ] Dropout:[b,n,d]->[b,n,d] Dropout:[b,n,d]>[b,n,d]
    • A d d N o r m : 2 ∗ [ b , n , d ] ( D r o u p o u t 输出, M u l t i h e a d A t t e n t i o n 输入 ) − > [ b , n , d ] AddNorm:2*[b,n,d](Droupout输出,MultiheadAttention输入)->[b,n,d] AddNorm:2[b,n,d](Droupout输出,MultiheadAttention输入)>[b,n,d]
    • F F N : [ b , n , d ] − > [ b , n , d ] FFN:[b,n,d]->[b,n,d] FFN:[b,n,d]>[b,n,d]
    • D r o p o u t : [ b , n , d ] − > [ b , n , d ] Dropout:[b,n,d]->[b,n,d] Dropout:[b,n,d]>[b,n,d]
    • A d d N o r m : 2 ∗ [ b , n , d ] ( D r o u p o u t 输出, F F N 输入 ) − > [ b , n , d ] AddNorm:2*[b,n,d](Droupout输出,FFN输入)->[b,n,d] AddNorm:2[b,n,d](Droupout输出,FFN输入)>[b,n,d]
      在这里插入图片描述
      编码器结构
      在这里插入图片描述
      多处执行Dropout

代码

import torch.nn as nnclass Embedding(nn.Module):def __init__(self,*args,**kwargs)->None:super().__init__(*args,**kwargs)def forward(self):print(self.__class__.__name__)
class PositionalEncoding(nn.Module):def __init__(self,*args,**kwargs)->None:super().__init__(*args,**kwargs)def forward(self):print(self.__class__.__name__)
class MultiheadAttention(nn.Module):def __init__(self,*args,**kwargs)->None:super().__init__(*args,**kwargs)def forward(self):print(self.__class__.__name__)
class Dropout(nn.Module):def __init__(self,*args,**kwargs)->None:super().__init__(*args,**kwargs)def forward(self):print(self.__class__.__name__)
class AddNorm(nn.Module):def __init__(self,*args,**kwargs)->None:super().__init__(*args,**kwargs)def forward(self):print(self.__class__.__name__)
class FFN(nn.Module):def __init__(self,*args,**kwargs)->None:super().__init__(*args,**kwargs)def forward(self):print(self.__class__.__name__)class EncoderBlock(nn.Module):def __init__(self,*args, **kwargs)->None:super().__init__(*args,**kwargs)self.mha = MultiheadAttention()self.dropout1=Dropout()self.addnorm1=AddNorm()self.ffn=FFN()self.dropout2=Dropout()self.addnorm2 = AddNorm()def forward(self):self.mha()self.dropout1()self.addnorm1()self.ffn()self.dropout2()self.addnorm2()class TransformerEncoder(nn.Module):def __init__(self,*args,**kwargs)->None:super().__init__(*args,**kwargs)self.embedding=Embedding() # 把序号转变为有语义信息的编码self.posenc=PositionalEncoding()self.dropout=Dropout()self.encblocks=nn.Sequential()for i in range(3):self.encblocks.add_module(str(i),EncoderBlock())def forward(self):self.embedding()self.posenc()self.dropout()for i,blk in enumerate(self.encblocks):print(i)blk()te=TransformerEncoder()
te()

输出结果

Embedding
PositionalEncoding
Dropout
0
MultiheadAttention
Dropout
AddNorm
FFN
Dropout
AddNorm
1
MultiheadAttention
Dropout
AddNorm
FFN
Dropout
AddNorm
2
MultiheadAttention
Dropout
AddNorm
FFN
Dropout
AddNorm

相关文章:

  • 深度学习-torch,全连接神经网路
  • 《实战AI智能体》——邮件转工单的AI自动化
  • 区块链如何成为智能城市的底层引擎?从数据透明到自动化治理
  • Cursor 生成java测试用例
  • Sa-Token使用指南
  • 微服务调用中的“大对象陷阱”:CPU飙高问题解析与优化
  • qt QGroupButton 实现两个QPushButton的互斥
  • 游戏引擎学习第232天
  • 解决 pip install tts 报错问题-—SadTalker的AI数字人视频—未来之窗超算中心
  • tomcat 的安装与启动
  • FPGA HR Bank如何支持ODELAY问题分析
  • text-decoration: underline;不生效
  • 土建施工员备考经验分享
  • 《软件设计师》复习笔记(14.3)——设计模式
  • Android12 ServiceManager::addService源码解读
  • Django 结合 Vue 实现简单管理系统的详解
  • JDBC 与 MyBatis 详解:从基础到实践
  • 7、生命周期:魔法的呼吸节奏——React 19 新版钩子
  • Qt 入门 5 之其他窗口部件
  • webgl入门实例-11WebGL 视图矩阵 (View Matrix)基本概念
  • 市民建议公交广播增加“请勿大声喧哗”提示,上海交通委回复
  • 两大跨国巨头称霸GLP-1市场,国产减肥药的机会在哪?
  • 全国首个医工交叉“MD+PhD”双博士培养项目在沪启动
  • 习近平结束对越南、马来西亚和柬埔寨国事访问回到北京
  • 谁在地铁里阅读?——对话上海地铁上的读书人
  • 二手服装“批发”市集受到年轻人追捧,是哪一股潮流在推动?