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

use*_*241 5 python pytorch torchvision

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

tempScale = torch.zeros((total, len(scale))).cuda() if useGpu else torch.zeros((nbPatchTotal, len(scale)))
Run Code Online (Sandbox Code Playgroud)

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

tmpScale[:, j] = scale
Run Code Online (Sandbox Code Playgroud)

错误信息是

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

我缺少什么?

jod*_*dag 5

您必须转换scale为与分配之前相同类型和设备的火炬张量tmpScale

tmpScale[:, j] = torch.from_numpy(scale).to(tmpScale)
Run Code Online (Sandbox Code Playgroud)

scale请注意,这是从 anint64到 a 的转换,如果 in 的值大于 2 24(大约 1600 万),float32则可能会导致精度损失。scale