注意力机制与Transformer模型详解
1. 构建Transformer模型
1.1 解码器实现
解码器的实现遵循编码器块模式,但进行了适配。除了自注意力( self_attn ),还引入了编码器注意力( encoder_attn )。代码如下:
x = self.sublayers[0](x, lambda x: self.self_attn(x, x, x, target_mask))
x = self.sublayers[1](x, lambda x: self.encoder_attn(x, encoder_states, encoder_states, source_mask))
return self.sublayers[2](x, self.ffn)
这里实例化了三个子层实例,分别用于自注意力、编码器注意力和前馈网络(FFN)。在 DecoderBlock.forward 方法中, encoder_attn 以先前解码器块的输出作为查询,以编码器的输出作为键值对,从而建立了编码器和解码器之间的联系;而 self_attn 则将输入 x 同时用于查询、键和值。
1.2 组合编码器和解码器
将编码器、解码器、源嵌入和目标嵌入组合在 EncoderDecoder 类中,代码如下:
超级会员免费看
订阅专栏 解锁全文
6126

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



