【问题标题】:Input Tensors not being moved to GPU in pytorch输入张量未在 pytorch 中移动到 GPU
【发布时间】:2019-09-30 00:16:05
【问题描述】:

运行我的代码时,我收到错误:

输入张量和参数张量不在同一个设备,发现输入张量在cpu和参数张量在cuda:0

即使我在输入中使用 .cuda()。

Google Colab link

代码:

use_cuda = True
if use_cuda and torch.cuda.is_available():
   model.cuda()

def test():
model.eval()
avgLoss = 0
for dataPoint in range(len(testData)):
    lstmInput = testData[dataPoint][0]
    lstmInput = torch.Tensor(lstmInput)
    lstmInput = lstmInput.view(len(testData[dataPoint][0]), 1, 5)
    label = testData[dataPoint][1]
    label = torch.Tensor(label)
    lstmInput = Variable(lstmInput)
    label = Variable(label)

    if use_cuda and torch.cuda.is_available():
          lstmInput.cuda()
          label.cuda()

    pred_label = model(lstmInput)
    loss = loss_fn(label, pred_label)
    avgLoss += loss.item()
return avgLoss / len(testData)

def train(num_epochs):
model.train()
for epoch in range(num_epochs):
    avgLoss = 0.0
    for datapoint in range(len(trainData)):
        model.hidden = model.init_hidden()
        optimizer.zero_grad()

        lstmInput = trainData[datapoint][0]
        lstmInput = torch.Tensor(lstmInput)
        lstmInput = lstmInput.view(len(trainData[datapoint][0]), 1, 5)
        label = torch.Tensor(trainData[datapoint][1])
        label = label.view(1, 5)
        lstmInput = Variable(lstmInput)
        label = Variable(label)

        if use_cuda and torch.cuda.is_available():
          print("happens")
          lstmInput.cuda()
          label.cuda()

        pred_label = model(lstmInput)
        loss = loss_fn(pred_label, label)
        # print(label, pred_label)
        avgLoss += loss.item()
        loss.backward()
        optimizer.step()
    print("Epoch: ", epoch, "MSELoss: ", avgLoss / len(trainData), "Test Acc: ", test())

【问题讨论】:

  • 本机安装的硬件是什么?可以在同一台计算机上同时安装 Tesla 卡和 Nvidia 显卡的计算机上收到该消息。
  • @Strom 我在我的 Macbook 上的 Google Colab Notebook 上运行它

标签: pytorch


【解决方案1】:

cuda()方法返回右侧 gpu 上的张量,因此您需要将其分配回您的输入变量:

lstmInput, label = lstimInput.cuda(), label.cuda()

【讨论】:

    猜你喜欢
    • 2020-07-09
    • 2020-08-31
    • 1970-01-01
    • 2019-07-09
    • 2021-02-06
    • 2018-12-29
    • 1970-01-01
    • 2019-06-19
    • 2020-10-29
    相关资源
    最近更新 更多