龙源期刊网
http://www.qikan.com.cn
基于
flask+TensorFlow
的手写数字识别模
型
Web
应用开发
作者:张磊
李斌
李臻
来源:《新一代》
2019
年第
22
期
摘
要:手写数字识别是研究图像识别、深度学习技术的典型案例,本文中以手写数字识
别
Web
应用程序开发为例,介绍了基于
flask
框架的
TensorFlow+Python Web
开发技术和相关
的编程方法。
关键词:
flask
框架
;Python Web
开发
;
手写数字识别
一、引言
图像识别是深度学习技术最广泛的应用之一,手写数字识别是学习和研究深度学习、图像
识别的典型案例,本文中使用
TensorFlow
(以下简称
TF
)框架训练手写数字识别模型、
Python
语言作为
Web
开发工具,基于
flask
框架实现了一款手写数字识别
Web
应用程序,为
TF
模型在
Web
中部署和开发应用提供参考。
二、模型训练和保存
手写数字识别采用
LeNet-5 CNN
模型。
LeNet-5
由
INPUT
层、
2
个卷积层、
2
个池化层、
3
个全连接层构成。
INPUT
层的输入尺寸为
32×
32
像素手写数字图像,手写数字包含数字
“0
~
9”
,
OUTPUT
层输出
One-Hot
格式的
10
分类结果。
训练模型的
MNIST
数据集中图片尺寸为
28×
28
像素,像素点用
8
位灰度值表示。由于
LeNet-5
模型
INPUT
层的输入尺寸为
32×
32
像素,
MNIST
数据集中原始图像尺寸并不符合模
型输入要求,使用
numpy
库(简称为
np
)中的数组填充函数
np.pad
()將原始图像四周填充
两圈数字
“0”
,得到尺寸
32×
32
像素的新图像。
MNIST
数据集类别标签默认是
One-Hot
格式。
TF
是基于计算图的框架,使用
TF
框架训练
LeNet-5
模型,根据模型结构定义的神经网络
前向传播过程构造出计算图,计算图中描述张量在节点之间从前到后的流动过程。训练模型在
会话进行,调用
tf.Session
()可生成会话,并创建默认计算图。在会话中不断喂入数据,反
复执行反向传播优化算法,确定最优的模型参数。
模型训练完,将模型保存成
TF
检查点。检查点可在
Web
服务器端由程序调用,在
TF
中,
tf.train.Saver
对象的
save
()和
restore
()方法分别用于保存和恢复模型参数。