了解并实现一个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模型究竟是什么?(二)》
热门推荐
四川值得一去的古镇:好耍古镇与特色古镇推荐
轻松上手SWOT分析:一步步教你分析企业竞争力
友谊的桥梁:家庭教育中孩子社交能力的培养
秦琼、尉迟恭“活”了!8K数字动画《门神》正式发布
门神年画:从传统到创新的艺术演变
带娃玩转北京环球影城的超全攻略!
北京环球影城冬日必打卡:哈利波特禁忌之旅&霸天虎过山车
从深圳到香港:带猫入境检疫完整攻略
探访重庆古迹:钓鱼城与渝中半岛的历史密码
秋冬打卡重庆最美自然保护区:金佛山&大巴山
山城重庆:为何被称为“雾都”
社恐快跑:逃离社交尴尬的神器
从社区文化节到和美乡村文化节:烟火宜宾 文化盛宴不“落幕”
益阳有什么特产小吃?湖南益阳十大特色小吃
产假规定包括哪些内容?
“妈妈岗”如何帮妈妈们重返职场?多地探索灵活就业新模式
遥控器耗电快怎么办?六大实用省电技巧帮你轻松应对
福特遥控器电池的更换方法是什么?更换电池时需要注意哪些事项?
2024数九时间表来了!数九是从哪一天开始数?今年春节冷不冷?
无处可逃就跳河,冒个泡能潜水20分钟,蜥蜴的保命秘籍最近被揭开了
社恐快跑:聚会神器,让你优雅逃离酒局
社恐快跑:社恐人的救星还是双刃剑?
好生态,与生俱来的“标签”——聚焦“三个定位”系列之二
北京友谊医院&新华网联合推荐:春节健康生活小贴士
北京环球影城霸天虎过山车:37米高空上的速度与激情
春节穷游好去处:重庆、西安、成都
春节理财小窍门:省钱也能有面子!
过年省钱又好玩:从免费游戏到DIY活动全攻略
总蛋白和球蛋白偏高原因及应对方法
昌河北斗星车主必看:省钱保养秘籍