图像识别-MNIST分类问题

摘要

本报告基于美国国家标准与技术研究院收集整理的MNIST手写数字数据集。在当前时代背景下,仍有大量手写数字需要处理,对它们的识别及分类是解决问题的关键。对此,本论文中练习并体会了MNIST数据集中手写数据的分类。论文主要内容包括:实验过程的记录,实验结果的简要分析,相关方法的介绍。实验过程由Python实现,使用了AutoEncoder降维方法及MLP、FCN分类方法,通过比较两种分类方法的准确率得到最终结论。

关键词:手写数字识别;超高维数据;数据分类

ABSTRACT

This report is based on MNIST handwritten digital data set collected by National Institute of Standards and Technology, NIST. In the current era, there are still a large number of handwritten digits to be processed, and their recognition and classification is the key to solve the problem. In this paper, I practice and experience the classification of handwritten data in MNIST data set. The main contents of this paper include: the recording of the experimental process, the brief analysis of the experimental results, and the introduction of the relevant methods. The experimental process is implemented by Python 3. The AutoEncoder, Multilayer Perceptron and Fully Convolutional Networks are used. The final conclusion is obtained by comparing the accuracy of the two classification methods.

Key words:Handwritten digit recognition, Ultra-high dimensional data, Data Classification

1 研究背景及意义

1.1 研究背景
1.1.1 起源

美国国家标准与技术研究院有识别手写数字的需求,因此收集统计了来自二百余位民众的手写数字样式,将其字迹图像整理为MNIST数据集,用算法实现对手写数字的识别;同时,MNIST数据集也起到了帮助研究者评测理解机器学习算法的作用。

1.1.2 发展
1998年,LeCun在其论文《Gradient-Based Learning Applied to Document Recognition》中用CNN算法实现了基于MNIST数据集的手写数字识别。
MNIST逐渐成为广为人知的手写数字数据集,被越来越多的人广泛使用,相关项目成为被学习的经典示例。

1.2 研究意义
体会MNIST数据集,练习相关方法的使用;在Python中实现基于MNIST数据集的手写数字识别,并依据实验结果进一步确定更优方法。

2 数据来源

2.1 MNIST数据集
2.1.1 数据集介绍

MNIST数据集是美国国国家标准与技术研究院整理的大型手写数字数据集,其中包含训练集60000个,测试集10000个。数字图像已经经过处理,每个图像文件大小统一,为28*28像素,包含数字0-9中的一个;且图像中手写数字居中显示,便于操作及处理。

2.1.2 数据集官网
MNIST官网为: http://yann.lecun.com/exdb/mnist/index.html ,可从中获取需要的数据。

3 实证分析

3.1 数据预处理及降维
3.1.1 准备工作

解压下载好的mnist.zip文件,共包含1个npz文件及4个gz文件。其中gz文件存储的是向量及多维度矩阵,含有手写数字的图像及标签;npz文件起到一定整合作用,后续编写Python代码时仅读取npz文件即可获取数据集中需要使用的内容。

import tensorflow
import keras
import matplotlib.pyplot as plt
import numpy as np

#原始数据中涉及到的文件均已上传到jupyter notebook
#打开npz文件
mnist = np.load('mnist.npz')

tensorlow是机器学习领域常用的深度学习框架,可用于实现构建神经网络分布式学习和交互系统等,具有通用性强、可移植性强等特点,在手写识别、图像分类等应用中展现良好效果。
keras是一个人工神经网络库,可用于深度学习模型的各项操作,在Python中以tensorflow为基础进行安装及导入。
在Python3中初次使用tensorflow及keras需要使用pip install的方法进行安装,此处已经预先安装好,故省略。

3.1.2 设置训练集及测试集

#设置train及test
x_train = mnist['x_train']
y_train = mnist['y_train']
x_test = mnist['x_test']
y_test = mnist['y_test']

在进行机器学习的过程中,需要将数据分割为训练集及测试集两部分,用训练集的数据训练模型,在测试集验证模型效果。

mnist数据集中已经预先分割好,只需要分别设置在x和y两个方向上的训练集及测试集即可。同时还可以预览设置好的训练集及测试集。

3.1.3 预览数据

#预览一个图像
plt.figure(figsize=(5,5))
plt.imshow(x_train[300])

在这里插入图片描述
在执行后续操作前,对mnist数据中的原始手写数字图像进行预览,便于对数据集的理解。此处采用两种预览方式,查看了数据中的单个数字8,以及同时查看多个数字8。根据mnist数据集的特点,每个图像包含的字迹均不同。

#还可以一次预览多个图像,我们可以看到这些手写的数字,每个长得都不一样
fig, ax = plt.subplots(
    nrows=3,
    ncols=3,
    sharex=True,
    sharey=True, )
ax = ax.flatten()
for i in range(9):
    img = x_train[y_train == 8][i]
    ax[i].imshow(img,interpolation='nearest')
plt.</
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值