热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

kaggle实战之AlexNet迁移学习训练猫狗分类器(一)

这篇文章主要详情如何利用AlexNet预训练模型来训练一个猫狗分类器,主要内容包括:项目结构详情数据探究数据的准备AlexNet模型的构建模型的训练和性能评估结果的提交一、项目结构

这篇文章主要详情如何利用AlexNet预训练模型来训练一个猫狗分类器,主要内容包括:

  • 项目结构详情
  • 数据探究
  • 数据的准备
  • AlexNet模型的构建
  • 模型的训练和性能评估
  • 结果的提交
一、项目结构详情

1、相关数据下载地址

项目地址:https://github.com/steelOneself/kaggle/tree/master/cat_vs_dog/AlexNet

数据下载地址:https://www.kaggle.com/c/dogs-vs-cats-redux-kernels-edition/data

AlexNet预训练文件下载地址:http://www.cs.toronto.edu/~guerzhoy/tf_alexnet/

2、项目文件详情

checkpoints --- 用来保存训练后生成的模型文件

model --- 用来存放预训练模型文件

tensorboard ---用来保存训练过程中的日志信息

txt --- 用来存放数据集的图片信息

AlexNet.py --- AlexNet模型结构文件

DataGenrator.py --- 数据生成类

Exploration.py --- 可视化分析

Generate_txt.py --- 将图片信息保存为txt文件

run.py --- 模型训练、评估、结构生成

util_data.py --- 数据集工具类,将数据分为训练集和验证集

二、数据探究

1、数据详情

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

2、数据探究

分析训练集中猫狗的分布情况

kaggle实战之AlexNet迁移学习训练猫狗分类器(一)

训练集中猫狗图片的分布情况

三、数据的准备

注意:我将展现出来的代码进行了省略,因为代码比较多,比较占空间,详细代码请参考git。

1、生成txt文件

kaggle实战之AlexNet迁移学习训练猫狗分类器(一)

将图片信息转为txt文件

将图片信息保存为txt文件,保存格式:图片id,图片路径,图片标签

2、将数据分为训练集和验证集

kaggle实战之AlexNet迁移学习训练猫狗分类器(一)

将数据集分为训练集和验证集

将25000张图片分为训练集和验证集,训练集占20000张图片,验证集占5000张图片,分割的时候需要注意,训练集和验证集中猫和狗所占的比例相同。

3、数据生成类

kaggle实战之AlexNet迁移学习训练猫狗分类器(一)

数据生成类

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

四、AlexNet模型构建
kaggle实战之AlexNet迁移学习训练猫狗分类器(一)

AlexNet网络结构

kaggle实战之AlexNet迁移学习训练猫狗分类器(一)

AlexNet网络

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

1、模型的训练

模型参数设置

kaggle实战之AlexNet迁移学习训练猫狗分类器(一)

模型参数设置

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

kaggle实战之AlexNet迁移学习训练猫狗分类器(一)

训练日志

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

kaggle实战之AlexNet迁移学习训练猫狗分类器(一)

2、模型评估

kaggle实战之AlexNet迁移学习训练猫狗分类器(一)

3、查看模型在验证集上分类正确和分类错误的图片

kaggle实战之AlexNet迁移学习训练猫狗分类器(一)

分类正确和错误结果展现

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

4、查看验证集预测结果的分布情况

kaggle实战之AlexNet迁移学习训练猫狗分类器(一)

验证集结果分布情况

5、混淆矩阵

kaggle实战之AlexNet迁移学习训练猫狗分类器(一)

6、验证集分类结果报告

kaggle实战之AlexNet迁移学习训练猫狗分类器(一)

六、提交结果

kaggle实战之AlexNet迁移学习训练猫狗分类器(一)

kaggle的成绩计算是利用,是计算预测结果的交叉熵损失值,在生成预测结果的时候,通过fc8输出的结果还需要经过一个softmax层才能输出每个类别的概率,直接使用预测类标(0或者1)比预测概率的成绩会低少量。

总结:本篇文章主要详情了如何使用一个相对简单的卷积神经网络AlexNet来构建一个预训练模型,熟习一下迁移学习的过程,在下一篇文章将会详情如何来预训练一个更复杂的Inception-resent网络。

最后,给大家推荐一个非常好的学习人工智能相关知识的平台——微信小程序“八斗问答”,有不懂的问题可以在上面进行免费提问,还有大咖会进行详细解答,还可以与大咖一对一咨询。我现在也已经入驻了“八斗问答”,以后的文章在上面也会同步升级,有不懂的地方欢迎来咨询。


推荐阅读
  • 在OpenCV 3.1.0中实现SIFT与SURF特征检测
    本文介绍如何在OpenCV 3.1.0版本中通过Python 2.7环境使用SIFT和SURF算法进行图像特征点检测。由于这些高级功能在OpenCV 3.0.0及更高版本中被移至额外的contrib模块,因此需要特别处理才能正常使用。 ... [详细]
  • ArcBlock 发布 ABT 节点 1.0.31 版本更新
    2020年11月9日,ArcBlock 区块链基础平台发布了 ABT 节点开发平台的1.0.31版本更新,此次更新带来了多项功能增强与性能优化。 ... [详细]
  • 本文旨在探讨Swift中的Closure与Objective-C中的Block之间的区别与联系,通过定义、使用方式以及外部变量捕获等方面的比较,帮助开发者更好地理解这两种机制的特点及应用场景。 ... [详细]
  • 本文探讨为何Request对象的外观设计被认为是精妙的,重点在于其如何利用门面模式确保数据安全,同时保持系统的高效交互。 ... [详细]
  • 本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ... [详细]
  • 汇总了2023年7月7日最新的网络安全新闻和技术更新,包括最新的漏洞披露、工具发布及安全事件。 ... [详细]
  • 本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 利用Node.js实现PSD文件的高效切图
    本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ... [详细]
  • 本文介绍了.hbs文件作为Ember.js项目中的视图层,类似于HTML文件的功能,并详细讲解了如何在Ember.js应用中集成Bootstrap框架及其相关组件的方法。 ... [详细]
  • 2023年,Android开发前景如何?25岁还能转行吗?
    近期,关于Android开发行业的讨论在多个平台上热度不减,许多人担忧其未来发展。本文将探讨当前Android开发市场的现状、薪资水平及职业选择建议。 ... [详细]
  • C/C++ 应用程序的安装与卸载解决方案
    本文介绍了如何使用Inno Setup来创建C/C++应用程序的安装程序,包括自动检测并安装所需的运行库,确保应用能够顺利安装和卸载。 ... [详细]
  • 使用OpenGL实现三维空间中任意两点间圆柱体管道的绘制
    本文介绍了如何利用OpenGL在三维空间中的任意两个点之间绘制具有指定半径的圆柱体管道。鉴于OpenGL较为底层,许多功能需自行实现,文中提供了详细的代码示例及解析。 ... [详细]
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
author-avatar
黄志琴文菱
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有