基于TensorFlow手写数字识别模型设计与实现

2019-01-30 08:05邢萌
电子技术与软件工程 2019年2期
关键词:手写向量概率

文/邢萌

采用TensorFlow,能够使神经网络编写难度得到降低,并使网络识别率得到提高。因此在手写数字识别模型设计与实现上,还要加强TensorFlow的应用,提出更加有效的识别方法。

1 TensorFlow概述

TensorFlow为开源软件平台,可以采用数据流图实现数值计算,为神经网络构建提供接口,实现BP神经网络的快速构建。平台上每个计算都能利用计算图表示,其中每个节点都是一个运算操作,节点与节点利用边连接,每个节点拥有任意多输入和输出,可看成是运算操作的实例化。而在计算机中流动的数据,即张量。在利用TensorFlow进行开发时,需要利用图进行计算任务表示,然后进行会话建立,将图传至TensorFlow引擎中,使图得到启动。通过变量初始化操作,并实现节点运行,则能使变量值得到更新。采用TensorFlow,能够对机器学习算法进行执行,为多种开发语言提供支持,能够在异构系统上实现算法移植,为系统部署提供支持。作为开源机器学习软件资源库,目前TensorFlow能够为线性回归、深度学习、逻辑回归等各种算法提供支持。

2 基于TensorFlow手写数字识别模型设计与实现

2.1 设计原理

设计手写数字识别模型,还要使模型能够对图像进行识别,通过计算机处理图像信息,对图像内容进行理解,从而实现精确识别。而在图像识别方面,主要需要采用机器学习方法,使模型通过先验学习进行经验获取,然后对数据获取规律进行自动分析,完成知识结构的组织,能够正确进行响应。为此,还要使计算机对人类学习活动进行模拟,在掌握经验和规律的基础上,对未知和潜在概率分布等信息进行推理,确定数据样本中变量间的关系。手写数字识别属于分类问题,需将实例数据进行合理分类,能够采用支持向量机算法、k-近邻算法等多种算法。而同类的算法有较多,还要加强数据集的分析,以便进一步了解实际数据,缩小算法的选择范围。在应用程序开发阶段,需要完成数据收集,然后对数据源进行格式化处理,确保数据能够满足格式要求。将得到的数据输入到算法中,则能实现算法训练,完成知识或信息的抽取。确定训练得到的算法能够达到成功率的要求,则能转换为应用程序进行任务执行。

2.2 模型设计

实际进行模型设计时,采用MNIST数据集,由训练集、验证集和测试集构成,分别有55000、5000和10000个样本,从TensorFlow官网下载获得。对样本数据进行分析发现,每个样本包含对应标签信息,能够对表示的数字进行描述。而样本实际描述的为28×28像素的灰度图片,每张图片为长度784的数组,不包含二维结构信息,数据得到了简化,分类相对简单。从特征上来看,样本数据为55000×784张量,图片编号为一维,图片像素点为二维,数值为像素点灰度值,标签为55000×10的张量,能够对图片代表的数字进行描述,标签为19维向量。样本图标签向量对应位置为1,其余均为0。数据集中样本描述数字在0-9之间,共10类,所以手写数字识别要对第i样本为0-9中哪个数字的概率进行计算。结合数据特点,可以采用相对简单的softmax回归算法,设计的模型样本包含m个,类别为k个,得到的训练集为 {(x(1), y(1)),(x(2), y(2)),……,(x(m),y(m))},x(i)∈R(n+1),标签 y(i)∈{1,2,……,k}。针对输入x,应假设针对各类别j的概率值为p(y=j|x)。在函数输出k维向量的情况下,向量元素和为1,函数hθ(x)如下:

式 中,θ1, θ2, θk∈Rn+1为 模 型 参 数,P(y(i)=j|x(i); θj)则是样本 x(i)属于 j类概率。在模型参数计算的过程中,还要采用梯度下降法。针对得到的回归模型,需要输入样本数据,对测试样本数据所属类别概率进行计算,预测结果则是概率最大的类别。

2.3 模型实现

在模型实现阶段,需要载入TensorFlow库完成InteractiveSession创建,然后进行Placeholder创建,确定数据输入位置。在Placeholder中,首个参数代表的是数据类型,其次则为[None,784],指的是数据尺寸,None意味不对输入的条数进行限制,但是784则是对各条维向量进行限制。在此基础上需要对回归模型的biases和weight进行创建,然后进行回归算法的实现。在模型训练阶段,需要对损失的函数进行计算,利用函数对模型分类精度进行描述。在损失较少的情况下,说明采用模型获得的分类结果较为接近真实值,得到的结果较为精确。在实际操作时,需要先对模型进行初始化操作,将各参数设为零。而训练loss将不断减小,直至局部最优或全局最优。损失函数可以采用cross-entropy,需要利用TensorFlow进行计算。在算法优化阶段,需要采用随机梯度下降,然后进行训练操作迭代执行。具体来讲,就是进行100条样本随机抽取,完成mini-batch的构建,提供给placeholder。对train_step进行调用,可以完成样本训练。采用tf.argmax从张量中进行最大值序号的获取,可以实现模型准确率的测试。而tf.argmax(y,1)的概率最大,为数字类别。确定得到的结果是否正确,可以确定是否实现了正确分类。

3 结论

根据手写数字特点,基于TensorFlow实现了相应的识别模型设计。采用该模型,可以利用softmax回归算法实现数字分类问题的简化,得到结构相对简单的神经网络模型,并且获得较高的数字识别概率。

猜你喜欢
手写向量概率
向量的分解
概率与统计(一)
概率与统计(二)
聚焦“向量与三角”创新题
抓住身边事吾手写吾心
基于集成学习的MINIST手写数字识别
向量垂直在解析几何中的应用
深度学习在手写汉字识别中的应用综述
向量五种“变身” 玩转圆锥曲线