无法将 torch.Tensor 转移到 torch.cuda.Tensor

Cannot transfer torch.Tensor to torch.cuda.Tensor

我用下面的代码把torch.Tensor变成torch.cuda.Tensor

import torch
import numpy as np

a = np.random.randn(1, 1, 2, 3)

t2 = torch.tensor(a)
t2 = t2.cuda()

t3 = torch.tensor(a, device=torch.device('cuda'))
print(type(t3), t3.device, type(t2), t2.device)

它的输出是 <class 'torch.Tensor'> cuda:0 <class 'torch.Tensor'> cuda:0

我预计 class 是 'torch.cuda.Tensor'。我不知道为什么会这样。 我的torch版本是1.6.0对应的cuda版本是10.2

那是因为PyTorch 1.6.0中没有class如torch.cuda.Tensor

print(type(t3), t3.device, type(t2), t2.device) 中的 t3.devicet2.device 打印 cuda:0 这意味着您的张量已经在 GPU 上了。