pytorch 变压器中的 tgt_key_padding_mask BertModel

问题描述 投票:0回答:1

在查看 PyTorch 中的 transformer 文档 时,我看到形状 (batch_size, tgt_seq_len) 的 tgt_key_padding_mask 用于指示由于填充而导致 tgt 的某些部分不相关。当我从 Transformers 库中查看 Pytorch 的 BertModel 实现 时,我在前向函数中没有看到此类掩码的选项。使用 BertModel 时如何提供 tgt_key_padding_mask?

注释:最佳答案此处解释了 tgt_key_padding_mask 是什么。

BertModel 可以选择提供 head_mask,它与注意力_概率相乘(在 softmax 之后,但在与值相乘之前)。我还没有看到任何关于 head_mask 预期形状的提及/文档。看起来它将被广播到与attention_probs相乘所需的任何形状(如果形状为(batch_size,num_heads,query_seq_len = tgt_seq_len,key_seq_len = src_seq_len)),否则将触发形状不匹配错误。我想我可以通过传递我的 tgt_key_padding_mask 来简单地使用/滥用这个 head_mask 。但是在使用 BertModel 时还有另一种更合适的方法来指定 tgt_key_padding_mask 吗?

pytorch padding mask bert-language-model transformer-model
1个回答
0
投票

在 BertModel 中,如果注意力掩码作为 2D 张量传递,则假设是用于指示序列的哪些部分正在填充(因此需要被忽略)的掩码,我(和 nn.Transformer )文档)指的是 tgt_key_padding_mask。在这种情况下,因果掩码(tgt_mask,根据 nn.Transformers 文档)是根据序列长度“自动计算”的,并与传递的注意力掩码“组合”。我希望这被记录在某处。

© www.soinside.com 2019 - 2024. All rights reserved.