随着数字化的普及和信息技术的发展,在编号处理、数量读取、价格统计等场合,手写数字识别系统的应用需求越来越强烈,如何将数字方便、快速地输入到计算机中已成为关系到计算机技术普及的关键问题。数字识别技术的研究不仅可以解决当下面临的数字识别问题,同时在图像识别、机器学习等方面也有铺垫作用。由于手写数字识别难于建立精确的数学模型,本文基于TensorFlow卷积神经网络设计手写数字识别算法,导入MNIST数据集进行训练,并测试网络模型的识别准确率。
TensorFlow
TensorFlow是一个基于Python和基于数据流编程的机器学习框架,由谷歌基于DistBelief进行研发,并在图形分类、音频处理、推荐系统和自然语言处理等场景下有着丰富的应用。2015年11月9日,TensorFlow依据Apache 2.0 开源协议开放源代码。
TensorFlow具有灵活的架构,可部署于各类服务器、PC终端、移动设备和网页并支持GPU和TPU高性能数值计算,提供了各类主流编程语言的API。
数据流图中用“结点”(nodes)和“线”(edges)的有向图来描述数学计算。这些数据“线”可以输运“size可动态调整”的多维数据数组,即“张量”(tensor)。张量从图中流过的直观图像是这个工具取名为“TensorFlow”的原因。一旦输入端的所有张量准备好,节点将被分配到各种计算设备完成异步并行地执行运算。
Tensor和Flow是TensorFlow最为基础的要素。Tensor意味着data;Flow意味着流动,意味着计算,意味着映射,即数据的流动,数据的计算,数据的映射,同时也体现数据是有向的流动、计算和映射。
MNIST
MNIST是一个经典的计算机视觉数据集,来自美国国家标准与技术研究所(NIST),由纽约大学的Yann LeCun教授主导建立。
MNIST数据集由250个不同的人手写而成,包含各种手写数字图片,以及每一张图片对应的数值标签。它包含60000个训练样本和10000个测试样本,每个样本都是一张28 * 28像素的灰度手写数字图片,存储在28 * 28的二维数组中。
MNIST数据集在深度学习中的地位,就像Hello,World!在编程中的地位。
自建立以来,它便被广泛应用于检验各种机器学习算法、测试各种模型,为机器学习的发展做出了不可磨灭的贡献,其当之无愧为历史上最伟大的数据集之一。
MNIST数据集已经被集成在Keras中,可以直接使用keras.datasets来访问。
环境安装与数据集
(1)环境信息
- Python 3.8
- Visual C++库
- Conda包管理工具
(2)查看NVIDIA驱动版本
nvidia-smi
电脑的NVIDIA驱动版本高于418.x,故可以安装GPU版本。
(3)GPU版本的依赖库安装
- 安装CUDA Toolkit
conda install cudatoolkit=10.1
(之前已经安装好了)
2.安装cuDNN库
conda install cudnn=7.6.5
(4)Conda配置文件
(5)下载安装tensorflow-gpu
pip install tensorflow-gpu -i https://pypi.douban.com/simple
(6)安装matplotlib和jupyter notebook
pip install matplotlib notebook -i