Я пытаюсь переобучить слой FC resnet50 в моем наборе данных.После загрузки набора данных и модели предварительного обучения я перехожу на устройство, но получаю ошибку
: ожидаемый объект внутреннего процессора, но получен внутренний CUDA для аргумента # 4 'mat1'
Я много искал в Интернете и обнаружил, что в основном такого рода ошибки возникают из-за того, что модель не перемещена или вход в модель не перемещен в графический процессор.Я сделал оба, но все же, не повезло.Вот код и ошибка.
if steps % print_every == 0:
test_loss = 0
accuracy = 0
resnet50.eval()
with torch.no_grad():
for inputs, labels in testloader:
inputs, labels = inputs.to(device),labels.to(device)
logps = resnet50.forward(inputs)
batch_loss = criterion(logps, labels)
test_loss += batch_loss.item()
ps = torch.exp(logps)
top_p, top_class = ps.topk(1, dim=1)
equals = top_class == labels.view(*top_class.shape)
accuracy+=torch.mean(equals.type(torch.FloatTensor)).item()
train_losses.append(running_loss/len(trainloader))
test_losses.append(test_loss/len(testloader))
print(f"Epoch {epoch+1}/{Epochs}.. "
f"Train loss: {running_loss/print_every:.3f}.. "
f"Test loss: {test_loss/len(testloader):.3f}.. "
f"Test accuracy: {accuracy/len(testloader):.3f}")
running_loss = 0
resnet50.train()