Input type (torch.cuda.DoubleTensor) and weight type (torch.cuda.FloatTensor) should be the same
出现源码:

原因:词向量emb里面的类型是DoubleTensor,导致输入的数据经过embedding之后转换为DoubleFloat类型的变量,但是模型的参数却是FloatTensor。由此导致出错。
解决办法:将词向量转为DoubleTensor 或者 将embedding后的变量转换为FloatTensor。
示例:
将词向量转为DoubleTensor
这里使用的是我自己的源码为演示。以下源码为加载Glove词向量的函数。在转换为Tensor前先转为float32类型,随后转Tensor便是FloatTensor(切忌不可用float()转,float()转的后面会变成DoubleTensor)。

将embedding后的变量转换为FloatTensor
在报错的地方前面加上
x = x.type(torch.cuda.FloatTensor)
