如何将 numpy.int64 分配给 torch.cuda.FloatTensor?

How do I assign a numpy.int64 to a torch.cuda.FloatTensor?

我无法将 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 转换为与 tmpScale 相同类型和设备的火炬张量。

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

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