【发布时间】:2020-09-26 14:51:15
【问题描述】:
我正在运行代码以在 kaggle 笔记本上训练 resnet 模型。我选择了加速器作为 GPU,所以我在那里没有犯任何错误。我正在使用以下代码训练模型:
model.cuda()
for epoch in range(10):
model.train(True)
trainloss=0
for x,y in trainloader:
x,y=x.cuda(),y.cuda()
yhat=model(x)
optimizer.zero_grad()
loss=criterion(yhat,y)
loss.backward()
optimizer.step()
trainloss+=loss.item()
print('Epoch {} Loss: {}'.format(epoch,(trainloss/len(trainloader.dataset))))
model.eval()
testcorrect=0
with torch.no_grad():
for test_x,test_y in testloader:
test_x,test_y=test_x.cuda(),test_y.cuda()
yhat=model(test_x)
_,z=yhat.max(1)
testcorrect+=(test_y==z).sum().item()
print('Model Accuracy: ',(testcorrect/len(testloader.dataset)))
网络代码:
model=torchvision.models.resnet18(pretrained=True)
num_ftrs=model.fc.in_features
model.fc=nn.Sequential(nn.Linear(num_ftrs,1000),
nn.ReLU(),
nn.Linear(1000,2)
)
如果您看到我在模型和张量(在训练部分和验证部分内)都使用了 .cuda() 函数。然而,kaggle notebook 显示的 GPU 使用率为 0%,而我的 CPU 使用率高达 99%。我是否遗漏了使用 GPU 训练模型所需的任何代码?
【问题讨论】:
标签: machine-learning deep-learning pytorch gpu