这里的火炬手,试图学习。
链接到我的笔记本: https://gist.github.com/jagadeesh-kotra/412f371632278a4d9f6cb31a33dfcfeb
我的验证精度为95%。
我使用以下内容进行预测:
m.eval()
testset_predictions = []
for batch_id,image in enumerate(test_dataloader):
image = torch.autograd.Variable(image[0])
output = m(image)
_, predictated = torch.max(output.data,1)
for prediction in predicted:
testset_predictions.append(prediction.item())
len(testset_predictions)
问题是当我将结果提交给kaggle竞赛时,我只能获得10%的准确性,这与随机预测一样好。我无法弄清楚我在做什么错。
请帮助:)
答案 0 :(得分:3)
很可能是由于错字所致;当您要使用新创建的predictated
结果时,实际上是在使用predicted
:
_, predictated = torch.max(output.data,1)
for prediction in predicted:
其中的predicted
来自链接代码的前面,它包含来自 validation 集合的预测,而不是来自 test 集合的预测:
#validation
# ...
for batch_idx, (data, target) in enumerate(val_dataloader):
data, target = Variable(data), Variable(target)
output = m.forward(data)
_, predicted = torch.max(output.data,1)
因此,您甚至都没有收到错误消息,因为predicted
确实存在-这实际上不是您想要使用的内容...您最终为验证集而不是测试提交了结果一个(这两个样本都包含10,000个样本当然无济于事),因此,您预期获得的随机猜测准确性约为10%...