当我要将模型放到GPU上时,出现错误! 它说Inputs在GPU上,但是隐藏状态在CPU上。 但是,所有这些都已放在GPU上。 我用
for m in model.parameters():
print(m.device) #return cuda:0
可以在GPU设备上查看模型上的所有状态。 错误是“ RuntimeError:输入张量和隐藏张量不在同一设备上,在cuda:0处找到输入张量,在cpu处找到了隐藏张量”
Windows 10服务器 pytorch 1.2.0 + CUDA 9.2 CUDA 9.2 cudnn 7.6.3 for CUDA 9.2
if torch.cuda.is_available():
model = model.cuda()
if torch.cuda.is_available():
`test= test.cuda() #test is the Input`
答案 0 :(得分:1)
您需要将模型,输入和目标移动到Cuda
if(torch.cuda.is_available()):
rnn.cuda()# rnn is your model
inputs = inputs.cuda()
target = target.cuda()
答案 1 :(得分:0)
当 PyTorch 尝试计算存储在 CPU 上的张量和 GPU 上的张量之间的运算时,会发生此错误。在高层次上,有两种类型的张量 - 数据类型和模型参数类型,两者都可以像这样复制到同一设备:
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
data = data.to(device)
model = model.to(device)