考虑如下所示的4个预处理句子(标记化,数字化和填充)的批处理:
batch = torch.tensor([
[1, 2, 0, 0],
[4, 0, 0, 0],
[3, 5, 6, 7]
])
其中0
表示[PAD]
令牌。
因此,一种有效的方法是生成与padding masking
形状相同的batch
张量,在[PAD]
位置分配零,并将一个分配给其他输入数据(句子标记) )?
在上面的示例中,它将类似于:
padding_masking=
tensor([
[1, 1, 0, 0],
[1, 0, 0, 0],
[1, 1, 1, 1]
])
答案 0 :(得分:1)
您可以通过
获得所需的结果ShutdownHookManager
如果您想要整数而不是布尔值,请使用
padding_masking = batch > 0
答案 1 :(得分: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)