自注意力机制与Transformer编码器详解
1. 前馈子层
编码器层的最后一部分是一个前馈网络,它包含两个线性模块,中间使用ReLU函数(即 $max(x, 0)$ )。其公式如下:
$FFN(X’) = max(X’W_1 + b_1, 0)W_2 + b_2$
与注意力机制类似,我们会应用层归一化:
$LayerNormalization(X’ + FFN(X’))$
其中,$W_1$ 的大小是 $d_{model} \times d_{ff}$,$W_2$ 的大小是 $d_{ff} \times d_{model}$。
2. 编码器层
编码器由N个相同的层堆叠而成,每层由多头注意力和前馈网络组成。以下是编码器层的实现代码:
import torch
import torch.nn as nn
class TransformerEncoderLayer(nn.Module):
def __init__(self, d_model, nhead, d_ff=2048):
super().__init__()
self.multihead_attn = nn.MultiheadAttention(d_model, nhead)
self.layer_norm_1 = nn.LayerNorm(d_model)
self.W1 = nn.Linear(d_model, d_ff)
self.relu = nn.ReLU()
self.W2 = nn.
超级会员免费看
订阅专栏 解锁全文
3790

被折叠的 条评论
为什么被折叠?



