MNIST竞赛技术详解,文末有福利

2019 年 11 月 30 日 AINLP


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 _


点击阅读原文或者扫描下面的二维码,直达竞赛官网,了解更多内容:



添加下面二维码,备注暗号“FlyAI竞赛”:



即可获得2000分钟p40 GPU免费时长!还可以进群跟更多技术大神互动交流哦~

登录查看更多
0

相关内容

MNIST 数据集来自美国国家标准与技术研究所, National Institute of Standards and Technology (NIST). 训练集 (training set) 由来自 250 个不同人手写的数字构成, 其中 50% 是高中学生, 50% 来自人口普查局 (the Census Bureau) 的工作人员. 测试集(test set) 也是同样比例的手写数字数据。
最新《自动微分手册》77页pdf
专知会员服务
97+阅读 · 2020年6月6日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
160+阅读 · 2020年5月14日
【新书】Pro 机器学习算法Python实现,379页pdf
专知会员服务
197+阅读 · 2020年2月11日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
68+阅读 · 2020年1月17日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
94+阅读 · 2019年12月4日
干货实践 | 计算机视觉花卉识别模型(代码分享)
计算机视觉战队
10+阅读 · 2019年3月13日
博客 | CIFAR10 数据预处理
AI研习社
11+阅读 · 2018年10月12日
【干货】基于Keras的注意力机制实战
专知
58+阅读 · 2018年5月4日
入门 | 从VGG到NASNet,一文概览图像分类网络
机器之心
6+阅读 · 2018年4月2日
实战 | 基于深度学习模型VGG的图像识别(附代码)
七月在线实验室
12+阅读 · 2018年3月30日
用深度学习keras的cnn做图像识别分类,准确率达97%
数据挖掘入门与实战
4+阅读 · 2017年12月17日
干货|代码原理教你搞懂SGD随机梯度下降、BGD、MBGD
机器学习研究会
12+阅读 · 2017年11月25日
用Kaggle经典案例教你用CNN做图像分类!
AI研习社
6+阅读 · 2017年7月23日
TResNet: High Performance GPU-Dedicated Architecture
Arxiv
7+阅读 · 2020年3月30日
Arxiv
12+阅读 · 2019年4月9日
Arxiv
3+阅读 · 2019年3月15日
Arxiv
7+阅读 · 2018年3月22日
Arxiv
5+阅读 · 2018年1月30日
VIP会员
相关VIP内容
最新《自动微分手册》77页pdf
专知会员服务
97+阅读 · 2020年6月6日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
160+阅读 · 2020年5月14日
【新书】Pro 机器学习算法Python实现,379页pdf
专知会员服务
197+阅读 · 2020年2月11日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
68+阅读 · 2020年1月17日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
94+阅读 · 2019年12月4日
相关资讯
干货实践 | 计算机视觉花卉识别模型(代码分享)
计算机视觉战队
10+阅读 · 2019年3月13日
博客 | CIFAR10 数据预处理
AI研习社
11+阅读 · 2018年10月12日
【干货】基于Keras的注意力机制实战
专知
58+阅读 · 2018年5月4日
入门 | 从VGG到NASNet,一文概览图像分类网络
机器之心
6+阅读 · 2018年4月2日
实战 | 基于深度学习模型VGG的图像识别(附代码)
七月在线实验室
12+阅读 · 2018年3月30日
用深度学习keras的cnn做图像识别分类,准确率达97%
数据挖掘入门与实战
4+阅读 · 2017年12月17日
干货|代码原理教你搞懂SGD随机梯度下降、BGD、MBGD
机器学习研究会
12+阅读 · 2017年11月25日
用Kaggle经典案例教你用CNN做图像分类!
AI研习社
6+阅读 · 2017年7月23日
Top
微信扫码咨询专知VIP会员