Pytorch 无法计算torch.cuda.FloatTensor的点积
我使用GPU来计算神经网络输出的点积和一个Pytorch 无法计算torch.cuda.FloatTensor的点积,pytorch,Pytorch,我使用GPU来计算神经网络输出的点积和一个torch.cuda.FloatTensor(两者都存储在GPU中),但得到一个错误,即: TypeError: dot received an invalid combination of arguments - got (torch.cuda.FloatTensor) but expected (torch.FloatTensor tensor). 代码就像 p = torch.exp(vector.dot(ht)) 这里的向量是张量,ht是神经
torch.cuda.FloatTensor
(两者都存储在GPU中),但得到一个错误,即:
TypeError: dot received an invalid combination of arguments - got (torch.cuda.FloatTensor) but expected (torch.FloatTensor tensor).
代码就像
p = torch.exp(vector.dot(ht))
这里的向量是张量,ht是神经网络的输出
我已经为这些事情挣扎了好几天,但仍然不知道。提前感谢您提供任何可能的解决方案 以下错误消息是什么意思 TypeError:dot接收到无效的参数组合-Get(torch.cuda.FloatTensor),但应为(torch.FloatTensor tensor) 这意味着点函数需要cpu张量,但您提供的是gpu(cuda)张量
那么,如何解决代码的问题呢
p = torch.exp(vector.dot(ht))
正如您提到的vector
是一个FloatTensor,因此ht
也应该是一个FloatTensor,但是ht
是一个cuda.FloatTensor
(因为您的神经网络模型在gpu内存中)
因此,您应该通过执行以下操作将vector
转换为cuda.FloatTensor
vector = vector.cuda()
或者,您可以通过执行以下操作将cuda.FloatTensor
转换为cpu tensor。请注意,.cpu()
方法不适用于。在这种情况下,可以使用.data.cpu()
它应该能解决你的问题。如果我的回答能帮助你解决问题,你可以接受它。
ht = ht.cpu()