有帮助就给个小赞
看这里你需要了解多头自注意力,上一章节有介绍。
假设我们一次性训练两个句子,batch_size = 2.
i want a beer . // 5个token
i want a coke . // 5个token
我们的矩阵是下图的上面这个大长方块,经过view函数,切割成多个块,这是为了满足多头自注意力的计算方式。
input_Q 是下图的上面大的长方形矩阵, Q 就是被转换后的4维矩阵,下图的下面那个小型方块(三维空间画出四维物体,我是神…)
n_heads = 8
batch_size = 2
d_k = 64
Q = self.W_Q(input_Q).view(batch_size, -1, n_heads, d_k).transpose(1,2)
搭配图来看清晰很多