小编Pou*_*lou的帖子

带有填充掩码的 TransformerEncoder

我正在尝试使用不等于 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)

transformer-model attention-model pytorch

2
推荐指数
1
解决办法
3783
查看次数