Skip to content

请教在 get_masks 里面的 full_attention_mask -= padding_mask.unsqueeze(-1) - 1 作用是? #724

Closed Answered by zRzRzRzRzRzRzR
tanguofu asked this question in Q&A
Discussion options

You must be logged in to vote

这行代码的作用是确保模型在处理输入时,能够忽略那些填充的部分,只关注有效的输入数据。这对于处理变长序列的自然语言处理模型尤为重要,因为它直接影响到模型的效率和效果。

padding_mask.unsqueeze(-1):这个操作是给padding_mask增加一个维度,使其形状与full_attention_mask相兼容。padding_mask通常用于标记输入序列中的填充部分,其中0代表填充,1代表非填充。接着通过从full_attention_mask中减去padding_mask,原本为非填充部分(值为1)的位置在full_attention_mask中被减去1,变为0。
最后还需要 -1,是对full_attention_mask的值进行反转。这个操作实际上是将原本标记为填充的位置(原值为0)变为-1,而非填充位置(原值为1)变为0,在注意力机制中被忽略。

Replies: 1 comment 1 reply

Comment options

You must be logged in to vote
1 reply
@MonolithFoundation
Comment options

Answer selected by zRzRzRzRzRzRzR
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
3 participants