【发布时间】:2019-09-30 00:16:05
【问题描述】:
运行我的代码时,我收到错误:
输入张量和参数张量不在同一个设备,发现输入张量在cpu和参数张量在cuda:0
即使我在输入中使用 .cuda()。
代码:
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