我是 PyTorch 的新手,正在阅读有关变压器模型的本教程。我在 Win10 上使用 PyCharm。现在,我基本上只是复制粘贴了示例代码,但出现以下错误:
RuntimeError:参数#1 'indices' 的预期张量具有标量类型 Long;但得到了 CPUType (在检查嵌入参数时)
它似乎来自这条线
def 编码(self,src,src_mask):
返回 self.encodder(self.src_embed(src),src_mask)
Tbh,我什至不确定这意味着什么,更不用说我应该如何修复它了。什么是 CPU 类型?我什么时候创建了这种类型的变量?通过查看代码,我只使用张量(或 numpy 数组)
这是完整的错误消息:
C:...\Python\Python37\lib\site-packages\torch\nn_reduction.py:46: UserWarning: size_average 和 reduce args 将被弃用,请改用 reduction='sum'。warnings.warn(warning.format(ret)) C:/.../PycharmProjects/Transformer/all_the_code.py:263: UserWarning: nn.init.xavier_uniform 现在已弃用,取而代之的是 nn.init.xavier_uniform_。nn.init.xavier_uniform(p) Traceback(最近一次调用最后):
文件“C:/.../PycharmProjects/Transformer/all_the_code.py”,第 421 行,在
SimpleLossCompute(model.generator,criteria,model_opt)
文件中“C:/.../PycharmProjects/Transformer/all_the_code.py”,第 297 行,在 run_epoch
batch.src_mask,batch.trg_mask
文件“C:/.../PycharmProjects/Transformer/all_the_code.py”,第 30 行,
return self.decode(self.encode(src, src_mask), src_mask,
File "C:/.../PycharmProjects/Transformer/all_the_code.py", line 34, in encode
return self.encoder(self.src_embed(src) , src_mask)
文件“C:...\Python\Python37\lib\site-packages\torch\nn\modules\module.py”,第 493 行,在 __call__
结果 = self.forward(*input, **kwargs)
文件“C:...\Python\Python37\lib\site-packages\torch\nn\modules\container.py”,第 92 行,前向
输入 = 模块(输入)
文件“C:...\Python\ Python37\lib\site-packages\torch\nn\modules\module.py”,第 493 行,在 __call__
结果 = self.forward(*input, **kwargs)
文件“C:/.../PycharmProjects/Transformer/ all_the_code.py”,第 218 行,向前
return self.lut(x) * math.sqrt(self.d_model)
File "C:...\Python\Python37\lib\site-packages\torch\nn\modules\module.py",第 493 行,在 __call__
结果 = self.forward(*input, **kwargs)
文件“C:...\Python\Python37\lib\site-packages\torch\nn\modules\sparse.py”,第 117 行,向前
self.norm_type , self.scale_grad_by_freq, self.sparse)
文件“C:...\Python\Python37\lib\site-packages\torch\nn\functional.py”,第 1506 行,嵌入
返回 torch.embedding(weight, input, padding_idx、scale_grad_by_freq、稀疏)