【问题标题】:How do I assign a numpy.int64 to a torch.cuda.FloatTensor?如何将 numpy.int64 分配给 torch.cuda.FloatTensor?
【发布时间】:2020-07-14 17:31:03
【问题描述】:

我无法将 int64 分配给 torch 张量。我有以下张量

tempScale = torch.zeros((total, len(scale))).cuda() if useGpu else torch.zeros((nbPatchTotal, len(scale)))

在我的代码中,当我使用以下行时,它会抛出错误消息

tmpScale[:, j] = scale

错误信息是

TypeError: can't assign a numpy.int64 to a torch.cuda.FloatTensor

我错过了什么?

【问题讨论】:

  • scale 包含什么?你可以试试scale.astype('float64')
  • @kHarshit 这行不通,尤其是考虑到一个是 GPU 张量,一个是 numpy 数组。

标签: python pytorch torchvision


【解决方案1】:

在分配之前,您必须将scale 转换为与tmpScale 相同类型和设备的torch 张量。

tmpScale[:, j] = torch.from_numpy(scale).to(tmpScale)

请注意,这会将scaleint64 转换为float32,如果scale 中的值的大小大于224,这可能会导致loss of precision(大约 1600 万)。

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 2016-06-08
    • 2016-10-20
    • 2020-09-19
    • 2016-03-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多