MNIST算法竞赛技术详解,文末领福利~

2019 年 11 月 27 日 计算机视觉life

点击上方“计算机视觉life”,选择“星标”

快速获得最新干货


Part.1 项目简介


MNIST项目基本上是深度学习初学者的入门项目,本文主要介绍使用keras框架通过构建CNN网络实现在MNIST数据集上99+的准确率。温馨提示,文末有福利哦。



Part.2 数据集来源


MNIST手写数字数据集是深度学习中的经典数据集,该数据集中的数字图片是由250个不同职业的人手写绘制的。


其中,训练集数据一共60000张图片,测试集数据一共10000张图片。


每张手写数字图片大小都是28*28,每张图片代表的是从0到9中的每个数字。


该数据集样例如下所示:


在 FlyAI竞赛平台上  提供了准确率为99.26%的超详细代码实现,同时我们可以通过参加MNIST手写数字识别练习赛进行进一步学习和优化。


下面的代码实现部分主要该代码进行讲解。



Part.3 代码实现


3.1、算法流程及实现


算法流程主要分为以下四个部分进行介绍:

1.数据加载

2.数据增强

3.构建网络

4.模型训练


1.数据加载

在FlyAI的项目中封装了Dataset类,可以实现对数据的一些基本操作。


比如:

加载批量数据next_train_batch()、

校验数据next_validation_batch()、

获取全量数据get_all_data()、

获取训练集数据量get_train_length()

等。


具体使用方法如下:


对单张图片等数据的读取是在processor.py文件中完成。实现如下:


2.数据增强

数据增强的作用通常是为了扩充训练数据量提高模型的泛化能力,同时通过增加了噪声数据提升模型的鲁棒性。


在本项目中我们采用了比较简单的数据增强方法包括旋转、平移。实现如下:


为了展示数据增强的效果,我们对图像进行了可视化,完整代码如下:


可视化结果如图:


3.构建网络

由于手写数字图片大小仅为28*28,图像宽高比较小不太适合较深的网络结构。


因此我们自己搭建了一个卷积神经网络,网络结构如下所示:


运行summary()方法后输出的网络结构如下图:


keras提供了keras.utils.vis_utils模块可以对模型进行可视化操作。


模型结构图如下所示:


4.模型训练

这里我们设置了epoch为5,batch为32,采用adam优化器来训练网络。


通过调用FlyAI提供的train_log方法可以在训练过程中实时的看到训练集和验证集的准确率及损失变化曲线。



训练集和验证集的准确率及损失实时变化曲线如图:


3.2、最终结果


通过使用自定义CNN网络结构以及数据增强的方法,在epoch为5,batch为32使用adam优化器下不断优化模型参数,最终模型在测试集的准确率达到99.26%。


该项目的可运行完整代码链接:

https://www.flyai.com/download_temp_code?data_id=MNIST


_ END _


更多内容,扫描下面的二维码,直达竞赛官网!


添加下面二维码,备注暗号“计算机视觉life”即可获得2000分钟免费p40 GPU使用时长!还可以进群跟更多技术大神互动交流哦~


登录查看更多
0

相关内容

MNIST 数据集来自美国国家标准与技术研究所, National Institute of Standards and Technology (NIST). 训练集 (training set) 由来自 250 个不同人手写的数字构成, 其中 50% 是高中学生, 50% 来自人口普查局 (the Census Bureau) 的工作人员. 测试集(test set) 也是同样比例的手写数字数据。
【干货书】高级应用深度学习,294页pdf
专知会员服务
149+阅读 · 2020年6月20日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
160+阅读 · 2020年5月14日
【Google-CMU】元伪标签的元学习,Meta Pseudo Labels
专知会员服务
31+阅读 · 2020年3月30日
Sklearn 与 TensorFlow 机器学习实用指南,385页pdf
专知会员服务
126+阅读 · 2020年3月15日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
94+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
20+阅读 · 2019年11月7日
初学者的 Keras:实现卷积神经网络
Python程序员
24+阅读 · 2019年9月8日
干货 | 用 Keras 实现图书推荐系统
AI科技评论
11+阅读 · 2018年12月15日
人脸识别入门实战
人工智能头条
4+阅读 · 2018年12月12日
博客 | CIFAR10 数据预处理
AI研习社
11+阅读 · 2018年10月12日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
[机器学习] 用KNN识别MNIST手写字符实战
机器学习和数学
4+阅读 · 2018年5月13日
keras系列︱深度学习五款常用的已训练模型
数据挖掘入门与实战
10+阅读 · 2018年3月27日
机器学习(32)之典型相关性分析(CCA)详解 【文末有福利......】
机器学习算法与Python学习
12+阅读 · 2017年12月16日
深度学习实战(二)——基于Keras 的深度学习
乐享数据DataScientists
15+阅读 · 2017年7月13日
Heterogeneous Graph Transformer
Arxiv
27+阅读 · 2020年3月3日
A Sketch-Based System for Semantic Parsing
Arxiv
4+阅读 · 2019年9月12日
Arxiv
4+阅读 · 2018年12月20日
Arxiv
7+阅读 · 2018年12月10日
Arxiv
3+阅读 · 2018年5月20日
VIP会员
相关VIP内容
【干货书】高级应用深度学习,294页pdf
专知会员服务
149+阅读 · 2020年6月20日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
160+阅读 · 2020年5月14日
【Google-CMU】元伪标签的元学习,Meta Pseudo Labels
专知会员服务
31+阅读 · 2020年3月30日
Sklearn 与 TensorFlow 机器学习实用指南,385页pdf
专知会员服务
126+阅读 · 2020年3月15日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
94+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
20+阅读 · 2019年11月7日
相关资讯
初学者的 Keras:实现卷积神经网络
Python程序员
24+阅读 · 2019年9月8日
干货 | 用 Keras 实现图书推荐系统
AI科技评论
11+阅读 · 2018年12月15日
人脸识别入门实战
人工智能头条
4+阅读 · 2018年12月12日
博客 | CIFAR10 数据预处理
AI研习社
11+阅读 · 2018年10月12日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
[机器学习] 用KNN识别MNIST手写字符实战
机器学习和数学
4+阅读 · 2018年5月13日
keras系列︱深度学习五款常用的已训练模型
数据挖掘入门与实战
10+阅读 · 2018年3月27日
机器学习(32)之典型相关性分析(CCA)详解 【文末有福利......】
机器学习算法与Python学习
12+阅读 · 2017年12月16日
深度学习实战(二)——基于Keras 的深度学习
乐享数据DataScientists
15+阅读 · 2017年7月13日
相关论文
Heterogeneous Graph Transformer
Arxiv
27+阅读 · 2020年3月3日
A Sketch-Based System for Semantic Parsing
Arxiv
4+阅读 · 2019年9月12日
Arxiv
4+阅读 · 2018年12月20日
Arxiv
7+阅读 · 2018年12月10日
Arxiv
3+阅读 · 2018年5月20日
Top
微信扫码咨询专知VIP会员