保存 pytorch 模型的预测

Rya*_*an 2 pytorch

我正在遵循 pytorch 迁移学习教程并将其应用于 kaggle 种子分类任务,我只是不确定如何将预测保存在 csv 文件中,以便我可以提交,任何建议都会有帮助,这就是我所拥有的,

use_gpu = torch.cuda.is_available()
 model = models.resnet50(pretrained=True)
for param in model.parameters():
    param.requires_grad = False

num_ftrs = model.fc.in_features
model.fc = torch.nn.Linear(num_ftrs, len(classes))
if use_gpu:
    model = model.cuda()

criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.fc.parameters(), lr=0.001, momentum=0.9)
exp_lr_scheduler = lr_scheduler.StepLR(optimizer, step_size=7, gamma=0.1)

loaders = {'train':train_loader, 'valid':valid_loader, 'test': test_loader}

model = train_model(loaders, model, criterion, optimizer, exp_lr_scheduler, num_epochs=50)
Run Code Online (Sandbox Code Playgroud)

nnn*_*mmm 5

训练完模型后,您可以根据测试数据对其进行评估。这会给你一个Variable,可能在 GPU 上。从那里,您需要使用 将其张量复制到 CPUcpu()并将其转换为 numpy 数组numpy()。然后,您可以使用 numpy 的CSV 功能或使用 pandas 的DataFrame.to_csv等。在第一种情况下,你会得到这样的结果:

# evaluate on Variable x with testing data
y = model(x)
# access Variable's tensor, copy back to CPU, convert to numpy
arr = y.data.cpu().numpy()
# write CSV
np.savetxt('output.csv', arr)
Run Code Online (Sandbox Code Playgroud)