如何在kaggle上使用fastai v1.0(下)

接着上篇,我们已经在kaggle的notebook上导入了数据集,并且使用数据集训练了模型的最后几层。这一篇将带领大家完成预测(predict)功能,以及最后的提交(submission)。

从预测接着说吧。

1.预测

np.set_printoptions(precision=6, suppress=True)
test_result = learner.get_preds(ds_type=DatasetType.Test)

第一行为设置numpy输出格式(可选)
通过调用fastai的get_preds方法批量预测,参数DatasetType.Test则告诉程序自动寻找test数据测试集合

for i in range(0, 12):
    print(np.array(test_result[0][1][i*10:i*10+10]))

返回结果如图所示:
如何在kaggle上使用fastai v1.0(下)_第1张图片

可以看到有一个值会特别高,这就是这条数据所对应的分类所在的位置。

2.提交

pd.options.display.float_format = '{:.6f}'.format
df = pd.DataFrame(np.array(test_result[0]))
df.columns = data.classes
df.head()

这里按照要求进行了数据的格式化,默认会以指数形式输出,这里用6位小数的浮点数来输出。
使用df.head()来确认一下数据。
返回结果如图所示:


如何在kaggle上使用fastai v1.0(下)_第2张图片

看上去还不错。
不过按照要求,我们还缺少第一列id。接下来我们就为我们的dataframe加上id列的数据吧。
df.insert(0, "id", [e.name[:-4] for e in data.test_ds.x.items])

在fastai v1.0中,每个图片的文件名将存放在x.items.name中,所以我们这里需要把文件名最后的'.jpg'从字符串里面去除掉,只保留id。然后再次调用df.head()查看结果。

返回结果如图所示:
如何在kaggle上使用fastai v1.0(下)_第3张图片

完美!

这里我们已经将所有的预测结果整理成了要求的提交格式。接着我们就可以导出csv文件了。

df.to_csv(f"dog-breed-identification-submission.csv", index=False)

好了。notebook中添加完这些内容之后,接着点击kaggle notebook上方的蓝色commit按钮,便会上传整个notebook并且自动运行,然后自动发布一个执行结果的网页。整个commit会花费一些时间运行脚本。


如何在kaggle上使用fastai v1.0(下)_第4张图片

如图所示,图片的上半部分则是一个https的kaggle站内网页链接,可以直接访问。kaggle的其他用户可以通过这个页面查看到你的notebook。图片的下半部分则是commit的log部分。整个commit过程成功的话会显示Completed (code 0)

访问这个生成的notebook网页,找到output部分
如何在kaggle上使用fastai v1.0(下)_第5张图片

可以看到,有一个submit to competition的按钮,点击它,我们的结果就会被提交到对应的比赛中啦^^

如何在kaggle上使用fastai v1.0(下)_第6张图片

提交之后可以看到绿色的Complete,以及我们的成绩Score。如果是红色的Failed说明你提交的csv还有些问题。

OK,我们在Kaggle的第一个submission就完成啦。

如果有问题,欢迎来评论区留言讨论^^

参考链接
120-dogbreeds-fast-ai-v1-0-x-my-version(kaggle notebook)
使用fastai进行图像分类之120种小狗
Python_数据处理_pandas

你可能感兴趣的:(如何在kaggle上使用fastai v1.0(下))