GY123456 发表于 2018-12-28 15:44:32

kaggle猫狗大战之AlexNet(一)

证集

二、数据探索

1、数据介绍
数据包含两部分,训练集和测试集,训练集有25000张图片,测试集有12500张图片,在训练集的图片名称中包含了图片的标签信息,而测试集的图片名称代表的图片的id,提交结果的时候要求提交图片的id和预测对应图片的标签(1表示dog,0表示cat)。

2、数据探索
分析训练集中猫狗的分布情况
http://image.100badou.com/image/20181015224011531255.png
三、数据的准备
注意:我将展示出来的代码进行了省略,由于代码比较多,比较占空间,详细代码请参考git。

1、生成txt文件
http://image.100badou.com/image/20181015224122521035.png

2、将数据分为训练集和验证集
http://image.100badou.com/image/20181015224237565882.png
将25000张图片分为训练集和验证集,训练集占20000张图片,验证集占5000张图片,分割的时候需要注意,训练集和验证集中猫和狗所占的比例相同。

3、数据生成类
http://image.100badou.com/image/20181015224334560629.png

利用CPU资源来加载数据,在读取图片的时候需要将图片转为227×227,因为AlexNet要求输出图片的大小是227×227。

四、AlexNet模型构建
http://image.100badou.com/image/20181015224417007502.png
http://image.100badou.com/image/20181015224441945284.png

五、模型的训练和性能评估1、模型的训练

1、模型参数设置
http://image.100badou.com/image/20181015224550346714.png

train_layers设置需要重新训练的层数,在这次训练过程中,只重新训练AlexNet的最后三层全连接层,其余的层保持不变。

训练完成之后,在checkpoints会产生ckpt模型文件,每一个epoch保存一次模型文件,只有当后一个在验证集上的准确率大于前一个时才会保存模型文件,在保存模型文件的时候后面有附带该次epoch在验证集上的准确率。

2、模型评估
http://image.100badou.com/image/20181015224626679269.png

3、查看模型在验证集上分类正确和分类错误的图片
http://image.100badou.com/image/20181015224704404929.png

上面一行表示分类正确的图片,下面一行表示分类错误的图片

4、查看验证集预测结果的分布情况
http://image.100badou.com/image/20181015224751210941.png
5、混淆矩阵
http://image.100badou.com/image/20181015224817509596.png

6、验证集分类结果报告
http://image.100badou.com/image/20181015224843723157.png

六、提交结果
http://image.100badou.com/image/20181015224922214041.png
kaggle的成绩是计算预测结果的交叉熵损失值,在生成预测结果的时候,通过fc8输出的结果还需要经过一个softmax层才能输出每个类别的概率,直接使用预测类标(0或1)比预测概率的成绩会低一些。

总结:本篇文章主要介绍了如何使用AlexNet来构建一个预训练模型,在下一篇文章将会介绍如何来预训练一个更复杂的Inception-resent网络。
了解更多干货文章,关注小程序八斗问答
页: [1]
查看完整版本: kaggle猫狗大战之AlexNet(一)