文章

Handcraft_mha

手撕MHA

我们需要什么

首先, 点积注意力(Scaled Dot-Product Attention)是注意力机制所需的最小单元,你也可以叫他(自注意力)

准备QKV

首先我们需要将输入的tensor映射到Query, Key和Value三个向量空间中去。

1
2
3
self.W_q = nn.Linear(embed_dim, embed_dim)
self.W_k = nn.Linear(embed_dim, embed_dim)
self.W_v = nn.Linear(embed_dim, embed_dim)

这三个线性层不会改变[B, n, embed_dim]的维度, 在同维度的空间进行映射。

拆分多头

拆分多头进行注意力的并行计算。

本文由作者按照 CC BY 4.0 进行授权