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)

发表回复