【问题标题】:How to get padding mask from input ids?如何从输入 ID 中获取填充掩码?
【发布时间】:2020-08-24 13:10:46
【问题描述】:

考虑如下所示的一组 4 个预处理句子(标记化、数字化和填充):

batch = torch.tensor([
                      [1, 2, 0, 0],
                      [4, 0, 0, 0],
                      [3, 5, 6, 7]
])

0 表示 [PAD] 令牌的位置。

因此,生成与batch 形状相同的padding masking 张量在[PAD] 位置分配零并将1 分配给其他输入数据(句子标记)的有效方法是什么?

在上面的例子中,它会是这样的:

padding_masking= 
tensor([
                      [1, 1, 0, 0],
                      [1, 0, 0, 0],
                      [1, 1, 1, 1]
])

【问题讨论】:

    标签: pytorch huggingface-transformers torchtext


    【解决方案1】:

    以下是在 pytorch 1.3.1 上测试的。

    pad_token_id = 0
    batch = torch.tensor([
        [1, 2, 0, 0],
        [4, 0, 0, 0],
        [3, 5, 6, 7]
    ])
    pad_mask = ~(batch == pad_token_id)
    print(pad_mask)
    

    输出

    tensor([[1, 1, 0, 0],
            [1, 0, 0, 0],
            [1, 1, 1, 1]], dtype=torch.uint8)
    

    【讨论】:

      【解决方案2】:

      你可以得到你想要的结果

      padding_masking = batch > 0
      

      如果您想要整数而不是布尔值,请使用

      padding_masking.type(torch.int)
      

      【讨论】:

      • 这正是我所需要的。谢谢!
      猜你喜欢
      • 2019-04-21
      • 1970-01-01
      • 1970-01-01
      • 2019-07-04
      • 1970-01-01
      • 2014-11-03
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多