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

网站建设时间及简介靖安县城乡规划建设局网站

网站建设时间及简介,靖安县城乡规划建设局网站,网站名字大全,有专门为个人网站做推广的吗Decoder 论文地址 https://arxiv.org/pdf/1706.03762 Decoder结构介绍 Transformer Decoder是Transformer模型的核心生成组件,负责基于编码器输出和已生成内容预测后续token。通过堆叠多层结构相同的解码层(Decoder Layer),每层包…

Decoder

  • 论文地址

    https://arxiv.org/pdf/1706.03762

Decoder结构介绍

  • Transformer Decoder是Transformer模型的核心生成组件,负责基于编码器输出和已生成内容预测后续token。通过堆叠多层结构相同的解码层(Decoder Layer),每层包含自注意力机制、编码器-解码器注意力机制和前馈神经网络,实现序列生成的上下文感知。

    image-20250429173813182

    实现上图红色框中的整个Decoder结构

    主要组件包含:

    1. 词嵌入层:将目标序列token映射为连续向量
    2. 位置编码:加入自回归生成的位置信息
    3. 多层解码层:通过三类注意力机制进行上下文建模

数学流程

  • 解码器的计算过程可形式化为:
    Embedding : Y e m b e d = Embedding ( Y i n p u t ) PositionEncode : Y p o s = Y e m b e d + PositionEncoding ( s e q _ l e n ) DecoderLayers : H o u t = LayerNorm ( FFN ( EncDec-Attn ( Self-Attn ( Y p o s ) ) ) ) \begin{aligned} \text{Embedding} &: Y_{embed} = \text{Embedding}(Y_{input}) \\ \text{PositionEncode} &: Y_{pos} = Y_{embed} + \text{PositionEncoding}(seq\_len) \\ \text{DecoderLayers} &: H_{out} = \text{LayerNorm}( \text{FFN}( \text{EncDec-Attn}( \text{Self-Attn}(Y_{pos}) ) ) ) \end{aligned} EmbeddingPositionEncodeDecoderLayers:Yembed=Embedding(Yinput):Ypos=Yembed+PositionEncoding(seq_len):Hout=LayerNorm(FFN(EncDec-Attn(Self-Attn(Ypos))))
    每个解码层(DecoderLayers)包含:

    1. 带掩码的多头自注意力(Masked Multi-Head Self-Attention)
    2. 编码器-解码器注意力(Encoder-Decoder Attention)
    3. 前馈神经网络(Feed-Forward Network)
    4. 三次残差连接 + 层归一化

代码实现

  • 其他层的实现

    层名链接
    PositionEncodinghttps://blog.csdn.net/hbkybkzw/article/details/147431820
    calculate_attentionhttps://blog.csdn.net/hbkybkzw/article/details/147462845
    MultiHeadAttentionhttps://blog.csdn.net/hbkybkzw/article/details/147490387
    FeedForwardhttps://blog.csdn.net/hbkybkzw/article/details/147515883
    LayerNormhttps://blog.csdn.net/hbkybkzw/article/details/147516529
    EncoderLayerhttps://blog.csdn.net/hbkybkzw/article/details/147591824
    Encoderhttps://blog.csdn.net/hbkybkzw/article/details/147616115
    DecoderLayerhttps://blog.csdn.net/hbkybkzw/article/details/147616556

    下面统一在before.py中导入

  • 实现 transformer 解码器 Decoder

    import torch 
    from torch import nnfrom before import PositionEncoding,calculate_attention,MultiHeadAttention,FeedForward,LayerNorm,DecoderLayerclass Decoder(nn.Module):def __init__(self, vocab_size, padding_idx, d_model, n_heads, ffn_hidden, dropout_prob=0.1, num_layers=6, max_seq_len=512):super(Decoder, self).__init__()# 词嵌入层(含padding掩码)self.embedding = nn.Embedding(num_embeddings=vocab_size,embedding_dim=d_model,padding_idx=padding_idx)# 位置编码器self.position_encode = PositionEncoding(d_model=d_model,max_seq_len=max_seq_len)# 解码层堆叠self.decode_layers = nn.ModuleList([DecoderLayer(n_heads=n_heads,d_model=d_model,ffn_hidden=ffn_hidden,dropout_prob=dropout_prob) for _ in range(num_layers)])def forward(self, x, encoder_kv, dst_mask=None, src_dst_mask=None):# 输入形状: [batch_size, tgt_seq_len]embed_x = self.embedding(x)               # 词向量映射pos_encode_x = self.position_encode(embed_x)  # 位置编码# 逐层处理(携带编码器输出)for layer in self.decode_layers:pos_encode_x = layer(x=pos_encode_x,encoder_kv=encoder_kv,dst_mask=dst_mask,src_dst_mask=src_dst_mask)return pos_encode_x  # 输出形状: [batch_size, tgt_seq_len, d_model]
    

    关键组件说明:

    1. 双注意力机制:每层包含自注意力和编码器-解码器注意力
    2. 掩码控制
      • dst_mask:防止解码时看到未来信息(三角掩码)
      • src_dst_mask:控制编码器-解码器注意力范围
    3. 信息融合:将编码器输出作为Key/Value供解码器查询
  • 维度变化

    处理阶段张量形状变化示例
    原始输入[batch_size, tgt_seq_len]
    词嵌入层输出[batch_size, tgt_seq_len, d_model]
    位置编码[batch_size, tgt_seq_len, d_model]
    编码器输出[batch_size, src_seq_len, d_model]
    解码层输出[batch_size, tgt_seq_len, d_model]

使用示例

  • 测试用例

    if __name__ == "__main__":# 模拟输入:batch_size=4,目标序列长度32y = torch.randint(0, 100, (4, 32))# 编码器输出:batch_size=4,源序列长度64,维度512encoder_out = torch.randn(4, 64, 512)decoder = Decoder(vocab_size=100,padding_idx=0,d_model=512,n_heads=8,ffn_hidden=2048,num_layers=6,max_seq_len=51)out = decoder(y, encoder_out)print("输入形状:", y.shape)  print("编码器输出形状:", encoder_out.shape)  print("解码器输出形状:", out.shape)  
    
  • 参数解释

    参数名典型值作用描述
    vocab_size30000目标语言词表大小
    padding_idx0指定padding token的索引
    d_model512模型隐藏层维度
    n_heads8注意力头数量
    ffn_hidden2048前馈网络中间层维度
    num_layers6解码层堆叠数量
    max_seq_len512支持的最大序列长度
    encoder_kv-编码器输出,用于交叉注意力计算
    dst_mask-目标序列自注意力掩码(三角形)
    src_dst_mask-源-目标序列交叉注意力掩码

http://www.dtcms.com/a/548790.html

相关文章:

  • 记一次从文件读取到getshell
  • 从顶流综述,发现具身智能的关键拼图----具身智能的内部模拟器:World Model如何成为AI走向真实世界的关键技术
  • 学习笔记—契比雪夫多项式和契比图过滤器
  • 【机器学习入门】9.2:感知机 Python 实践代码模板(苹果香蕉分类任务适配)
  • 大会的网站架构企业网站设计的基本内容包括哪些
  • 打印对称的X。
  • 生产管理系统详解:生产产品,bom,生产线,生产工序,bom清单,生产订单,生产任务单,他们之间的关系梳理
  • 企业微信SCRM系统有什么作用,满足哪些功能?从获客到提效的功能适配逻辑
  • JS如何操作IndexedDB
  • 网站正在维护中wordpress 评分
  • Kafka关闭日志,启动一直打印日志
  • 搬家网站建设思路荆门哪里有专门做企业网站的
  • 前后端分离
  • curl开发常用方法总结
  • rust实战:基础框架Rust + Tauri Windows 桌面应用开发文档
  • knife4j在配置文件(xml文件)的配置错误
  • Java的多线程——多线程(二)
  • 小企业也能用AI?低成本智能转型实战案例
  • ros2 播放 ros1 bag
  • 网页设计做一个网站设计之家官方网站
  • 基于STM32单片机 + DeepSeek-OCR 的智能文档扫描助手设计与实现
  • 微信小程序如何传递参数
  • 【数据结构】:数组及特殊矩阵
  • 记录一下微信小程序里使用SSE
  • API 接口安全:用 JWT + Refresh Token 解决 Token 过期与身份伪造问题
  • 云手机搬砖 高效采集资源
  • GitHub Actions CI/CD 自动化部署完全指南
  • Fastlane 结合 开心上架 命令行版本实现跨平台上传发布 iOS App
  • 广东营销网站建设服务公司军事信息化建设网站
  • Go Web 编程快速入门 14 - 性能优化与最佳实践:Go应用性能分析、内存管理、并发编程最佳实践