了解并实现一个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模型究竟是什么?(二)》
热门推荐
铁皮石斛怎么种植?
手肿可能是这些疾病的前兆,及时就医是关键
知识产权法规一览表:了解我国知识产权法律体系
板材检测标准有几种?
定价策略是什么
专家解读:肝癌患者的六大饮食原则
张幼仪:徐志摩口中的土包子,为何能成长为独当一面的大女人?
“核柴一号”发布:我国首次具备核电站应急柴油发电机组自主设计制造能力
赛后总结:孤军独行,雄鹿轻取胜利!
龟背竹叶子发黄焦边干枯元凶-从翠绿到枯黄,龟背竹的悲歌拯救指南
健康生活从家电开始:智能健康监测新趋势
日媒:中国量子技术存在感日益突出,公开专利数超美国,居首位
在NAS上轻松部署Home Assistant,实现全方位智能家居管理
意识可能隐藏在我们大脑的电场中
自动接触角测量仪的操作与维护策略
采光通风是基础,房屋规划要兼顾美观实用
情感的深度解析:理解情感的本质与力量
肩袖肌群锻炼指南:增强肩关节稳定性的实用训练方法
肩袖损伤的正确锻炼方法
如何判断伤口发炎?掌握5大正确观念预防蜂窝性组织炎!
牙摔掉了要多久之后才能补?要看牙齿情况是确定立即修复还是等待创口愈合后修复!
换券商股票怎么转移流程:了解转移股票到另一家券商的具体流程及操作步骤。
郭姓起名改名《康熙字典》高分的五格及好名字大全
湿冷魔法VS万元账单:南方人装地暖是智商税还是真香?
地暖铺设标准规范和要求有哪些
引发耳鸣的6个主要原因
风险管理策略与市场波动适应性:如何使风险管理策略适应市场波动
查出了桥本甲状腺炎,怎么办?如何治疗?
广州房子过户全攻略:买卖、赠与、继承等不同场景要求详解
深入理解Docker容器实战指南和最佳实践