我正在尝试使用不等于 none 的 src_key_padding_mask 实现 torch.nn.TransformerEncoder。想象一下输入的形状src = [20, 95]
,二进制填充掩码的形状为src_mask = [20, 95]
,填充标记的位置为 1,其他位置为 0。我制作了一个 8 层的 Transformer 编码器,每一层都包含一个带有 8 个头和隐藏维度 256 的注意力:
layer=torch.nn.TransformerEncoderLayer(256, 8, 256, 0.1)
encoder=torch.nn.TransformerEncoder(layer, 6)
embed=torch.nn.Embedding(80000, 256)
src=torch.randint(0, 1000, (20, 95))
src = emb(src)
src_mask = torch.randint(0,2,(20, 95))
output = encoder(src, src_mask)
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-107-31bf7ab8384b> in <module>
----> 1 output = encoder(src, src_mask)
~/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py in __call__(self, *input, **kwargs)
545 result = self._slow_forward(*input, **kwargs)
546 else:
--> 547 …
Run Code Online (Sandbox Code Playgroud)