【发布时间】:2020-12-13 09:36:31
【问题描述】:
我在做如下操作,
energy.masked_fill(mask == 0, float("-1e20"))
我的 python 跟踪如下,
File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 722, in _call_impl
result = self.forward(*input, **kwargs)
File "seq_sum.py", line 418, in forward
enc_src = self.encoder(src, src_mask)
File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 722, in _call_impl
result = self.forward(*input, **kwargs)
File "seq_sum.py", line 71, in forward
src = layer(src, src_mask)
File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 722, in _call_impl
result = self.forward(*input, **kwargs)
File "seq_sum.py", line 110, in forward
_src, _ = self.self_attention(src, src, src, src_mask)
File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 722, in _call_impl
result = self.forward(*input, **kwargs)
File "seq_sum.py", line 191, in forward
energy = energy.masked_fill(mask == 0, float("-1e20"))
RuntimeError: The size of tensor a (1024) must match the size of tensor b (512) at non-singleton dimension 3
这些是我的注意力层代码,
Q = self.fc_q(query)
K = self.fc_k(key)
V = self.fc_v(value)
#Q = [batch size, query len, hid dim]
#K = [batch size, key len, hid dim]
#V = [batch size, value len, hid dim]
# Q = Q.view(batch_size, -1, self.n_heads, self.head_dim).permute(0, 2, 1, 3)
# K = K.view(batch_size, -1, self.n_heads, self.head_dim).permute(0, 2, 1, 3)
# V = V.view(batch_size, -1, self.n_heads, self.head_dim).permute(0, 2, 1, 3)
Q = Q.view(batch_size, -1, self.n_heads, self.head_dim).view(-1, 1024)
K = K.view(batch_size, -1, self.n_heads, self.head_dim).view(-1, 1024)
V = V.view(batch_size, -1, self.n_heads, self.head_dim).view(-1, 1024)
energy = torch.matmul(Q, K.transpose(1,0)) / self.scale
我正在按照下面的 github 代码进行 seq to seq 操作,seq2seq pytorch 实际测试代码在以下位置,code to test a seq of 1024 to 1024 output
2nd example tried 在这里我已经注释掉了 pos_embedding 由于 CUDA 错误和大索引 (RuntimeError: cuda runtime error (59)
【问题讨论】:
-
你能分享你定义
mask的那段代码吗? -
将 torch.nn 导入为 nn nn.LayerNorm(feature_size)
-
@skinny_func 请找到一些代码参考和更多示例,代码参考在下面的链接中,github.com/VinACE/trans-vsumm/blob/master/…
-
您是按原样运行所有内容还是进行了某些更改?
-
它看起来就像当你创建面具时它的大小是 1024 而能量是 512
标签: python pytorch transformer seq2seq