【问题标题】:Failed to compute dot product of torch.cuda.FloatTensor无法计算 torch.cuda.FloatTensor 的点积
【发布时间】:2017-07-03 15:44:39
【问题描述】:

我使用 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))

这里的vector是torch FloatTensor,ht是神经网络的输出。

我已经为这些事情苦苦挣扎了好几天,但仍然不知道。提前感谢任何可能的解决方案!

【问题讨论】:

  • 如果我的回答帮助您解决了问题,您可以接受。

标签: pytorch


【解决方案1】:

以下错误信息是什么意思?

TypeError: dot 收到了无效的参数组合 - 得到 (torch.cuda.FloatTensor) 但预期为 (torch.FloatTensor tensor)。

这意味着点函数需要 cpu 张量,但您提供的是 gpu (cuda) 张量。


那么,如何解决你的代码问题?

p = torch.exp(vector.dot(ht))

正如您提到的 vector 是 Fl​​oatTensor,所以 ht 也应该是 FloatTensor,但 htcuda.FloatTensor(因为您的神经网络模型在 gpu 内存中)。

因此,您应该通过执行以下操作将 vector 转换为 cuda.FloatTensor。

vector = vector.cuda()

或者,您可以通过执行以下操作将cuda.FloatTensor 转换为 cpu 张量。请注意,.cpu() 方法不适用于Variable。在这种情况下,您可以使用.data.cpu()

ht = ht.cpu()

应该可以解决你的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-28
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 2015-09-07
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多