前言
这是对Transformer模型Word Embedding、Postion Embedding、Encoder self-attention mask内容的续篇。
视频链接:20、Transformer模型Decoder原理精讲及其PyTorch逐行实现_哔哩哔哩_bilibili
文章链接:Transformer模型:WordEmbedding实现-优快云博客
Transformer模型:Postion Embedding实现-优快云博客
Transformer模型:Encoder的self-attention mask实现-优快云博客
正文
首先介绍一下intra-attention mask,它指的是Decocder中间的部分:因为目标序列样本间的长度都是不一样的,而原序列间样本间的长度也是不一样的,并且一对之间的长度也是不一样的,所以如果目标序列的某个位置跟原序列之间的某个位置有pad的话就说明是无效的,他们之间的关系是无效的。所以需要得到这么一个掩码矩阵。
先给出公式:Q*K^T,就是Q矩阵乘以K矩阵的转置,shape:[batch_size,src_seg_len,tgt_seg_len]。这里返照前面构造的valid_encoder_pos,同时还要构造一个valid_decoder_pos:
valid_encoder_pos = torc