了解并实现一个Transformer Block
创作时间:
作者:
@小白创作中心
了解并实现一个Transformer Block
引用
CSDN
1.
https://blog.csdn.net/qq_36803941/article/details/138795224
Transformer Block是Transformer模型的核心组件之一,它包含了多头注意力机制和前馈神经网络等关键模块。本文将详细介绍Transformer Block的结构,并提供具体的代码实现,帮助读者深入理解这一重要模型组件。
1. 前言
什么是Transformer?如果希望深入理解可以参考:
- 《NLP深入学习:大模型背后的Transformer模型究竟是什么?(一)》
- 《NLP深入学习:大模型背后的Transformer模型究竟是什么?(二)》
本文主要介绍常常听到的Transformer Block的概念,以及如何实现一个Transformer Block。
2. Transformer Block
回顾一下Transformer的完整模型:
我们常说的Transformer Block对应图中解码器的上部分。为了具体展示流程,我们假设有一句话:“Every effort moves you”作为输入,经过蓝色框中的Transformer Block之后输出,如下图:
图中蓝色的部分就是所谓的Transformer Block。
3. 代码实现
BERT源码已经实现了Transformer的细节,完整源码参考Pytorch Bert,这里把Transformer Block实现的框架贴出来:
import torch.nn as nn
from .attention import MultiHeadedAttention
from .utils import SublayerConnection, PositionwiseFeedForward
class TransformerBlock(nn.Module):
"""
Bidirectional Encoder = Transformer (self-attention)
Transformer = MultiHead_Attention + Feed_Forward with sublayer connection
"""
def __init__(self, hidden, attn_heads, feed_forward_hidden, dropout):
"""
:param hidden: hidden size of transformer
:param attn_heads: head sizes of multi-head attention
:param feed_forward_hidden: feed_forward_hidden, usually 4*hidden_size
:param dropout: dropout rate
"""
super().__init__()
self.attention = MultiHeadedAttention(h=attn_heads, d_model=hidden)
self.feed_forward = PositionwiseFeedForward(d_model=hidden, d_ff=feed_forward_hidden, dropout=dropout)
self.input_sublayer = SublayerConnection(size=hidden, dropout=dropout)
self.output_sublayer = SublayerConnection(size=hidden, dropout=dropout)
self.dropout = nn.Dropout(p=dropout)
def forward(self, x, mask):
x = self.input_sublayer(x, lambda _x: self.attention.forward(_x, _x, _x, mask=mask))
x = self.output_sublayer(x, self.feed_forward)
return self.dropout(x)
4. 参考
- 《NLP深入学习:大模型背后的Transformer模型究竟是什么?(一)》
- 《NLP深入学习:大模型背后的Transformer模型究竟是什么?(二)》
热门推荐
多模态DeepSeek来了,北大港科联合发布Align-DS-V
100种分析思维模型之:DISC 模型
红枣的功效与作用
如何认识财富的内涵?实现财富增长的途径有哪些?
2025 年十大热门岗位排行:从 AI 到新能源,这些领域最吃香!
血脂偏高如何在日常调养?5个不良习惯若改正,降血脂或能更轻松
怎样排班合理?如何优化排班效率与员工满意度?
水刀切割机价格解析:影响因素及选购指南
股票尾盘买入技巧
保险咨询是什么
Science Advances:上海交大团队揭示强迫症与基因突变关联
环境检测岗位职责汇编(14篇)
DeepSeek-R1技术报告快速解读
为什么地球上的生物都是碳基生物?
双顶径是什么?孕期检查重要指标详解
哪吒2票房破90亿:中国动画电影如何用声音打动人心
揭秘千款分红险!红利“打折”背后的五大真相
龙卷风最新研究与防范策略
选择适合玩王者荣耀的手机需考虑性能、内存、续航等多方面因素
空气栓塞的典型症状
如何认识投资黄金的益处并合理规划资产配置?这些益处在不同经济环境下如何体现?
如何制定有效的请假制度
苦荞茶泡水喝的功效与作用
闵行的树已经穿上毛衣啦!可爱值1000%
SIRS医学上是什么意思
无花果的多样食用方法,营养美味两不误
工地人脸门禁系统如何实现高效考勤管理
家人们谁懂啊!大家居然都爱滁州这种糖!
什么样的浮漂才好用?从新手到老手,详解浮漂的选择攻略
【退费之争】舞蹈班未消费课程只转不退?法院:不存在!