【发布时间】:2021-11-03 21:56:49
【问题描述】:
我找到了很多关于这个主题的答案,但没有一个有帮助。
错误是:
RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same
训练循环:
model = BrainModel()
model.to(device)
loss_function = nn.BCELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
for epoch in range(EPOCHS):
for sequences, labels in train_dataloader:
optimizer.zero_grad()
labels = labels.view(BATCH_SIZE, -1)
sequences, labels = sequences.to(device), labels.view(BATCH_SIZE, -1).to(device)
print(next(model.parameters()).is_cuda, sequences.get_device(), labels.get_device())
out = model(sequences) # ERROR HERE
out, labels = out.type(torch.FloatTensor), labels.type(torch.FloatTensor)
loss = loss_function(out, labels)
loss.backward()
optimizer.step()
你可以在循环中看到一个打印,它的输出是:
True 0 0
这意味着所有——模型、x 和 y——都在 cuda 上。当我使用 CPU 而不是 GPU 时,相同的代码运行良好。我不明白还有什么需要转移到device。我总是按照我在这里的方式编写它,它总是运行良好:C
【问题讨论】:
标签: python deep-learning pytorch