gpt4 book ai didi

pytorch - src_mask 和 src_key_padding_mask 的区别

转载 作者:行者123 更新时间:2023-12-03 21:54:00 29 4
gpt4 key购买 nike

我在理解变压器方面遇到了困难。一切都在一点一点地变得清晰,但让我头疼的一件事是
src_mask 和 src_key_padding_mask 之间有什么区别,它在编码器层和解码器层的前向函数中作为参数传递。

https://pytorch.org/docs/master/_modules/torch/nn/modules/transformer.html#Transformer

最佳答案

我必须说 PyTorch 实现有点令人困惑,因为它包含太多掩码参数。但是我可以阐明您所指的两个掩码参数。 src_masksrc_key_padding_mask 都用于 MultiheadAttention 机制。根据 MultiheadAttention 的文档:

key_padding_mask – if provided, specified padding elements in the key will be ignored by the attention.

attn_mask – 2D or 3D mask that prevents attention to certain positions.


正如您从论文中了解到的 Attention is all you need ,MultiheadAttention 用于编码器和解码器。但是,在 Decoder 中,有两种类型的 MultiheadAttention。一种称为 Masked MultiheadAttention ,另一种称为常规 MultiheadAttention 。为了适应这两种技术,PyTorch 在其 MultiheadAttention 实现中使用了上述两个参数。
所以,长话短说——
  • attn_maskkey_padding_mask 用于编码器的 MultiheadAttention 和解码器的 Masked MultiheadAttention
  • memory_mask 用于解码器的 MultiheadAttention 机制,正如 here 所指出的。

  • 研究 MultiheadAttention 的实现可能会对您有所帮助。
    herehere 可以看出,首先 src_mask 用于阻止特定位置的参与,然后 key_padding_mask 用于阻止参与填充 token 。
    注意。 答案根据@michael-jungo 的评论更新。

    关于pytorch - src_mask 和 src_key_padding_mask 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62170439/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com