我们可以看到,训练的过程很快,十秒以内就能训练完,准确率也很高,atv,在验证集上最高达到了99.6%的准确率,这相当于一千张图只错了4张,可以说比我还厉害。 预测测试集 模型训练好以后,我们就可以对测试集进行预测,然后提交到 kaggle 上看看最终成绩了。
预测这里我们用到了一个小技巧,我们将每个预测值限制到了 [0.005, 0.995] 个区间内,这个原因很简单,kaggle 官方的评估标准是 LogLoss,对于预测正确的样本,0.995 和 1 相差无几,但是对于预测错误的样本,0 和 0.005 的差距非常大,是 15 和 2 的差别。参考 LogLoss 如何处理无穷大问题,下面的表达式就是二分类问题的 LogLoss 定义。 $$textrm{LogLoss} = - frac{1}{n} sum_{i=1}^n left[ y_i log(hat{y}_i) + (1 - y_i) log(1 - hat{y}_i)right]$$
还有一个值得一提的地方就是测试集的文件名不是按 1, 2, 3 这样排的,而是按下面的顺序排列的:
因此我们需要对每个文件名进行处理,然后赋值到 df 里,最后导出为 csv 文件。
总结 我们可以从上图中看到,模型对于前十个样本都给出了很肯定的预测,提交到 kaggle 以后,得分也是很棒,0.04141,在全球排名中可以排到20/1314。我们如果要继续优化模型表现,可以使用更棒的预训练模型来导出特征向量,或者对预训练模型进行微调(fine-tune),或者进行数据增强(data augmentation)等。 (责任编辑:本港台直播) |