手写识别系统怎么安装 千彩手写识别系统

千色手写识别系统(如何安装手写识别系统)2018-08-30 09:33
手写数字识别算法的设计与实现
本文利用python设计了基于TensorFlow的手写数字识别算法,并编写了GUI界面,构建了手写数字识别系统 。这是我的本科论文题目,当然也是机器学习的根本问题 。这篇博文不会以论文的形式呈现,而是从编程实战的角度来描述完成机器学习的项目 。
项目:本文要解决的重要问题是手写数字识别,最终要完成一个识别系统 。
设计识别率高的算法,实现快速识别系统 。
1 LeNet-5型号介绍
本文利用卷积神经网络实现手写数字识别,建模思路来自LeNet-5,如下图所示:

手写识别系统怎么安装 千彩手写识别系统

文章插图
这是最初用于手写数字识别的网络,我认为也是最简单的深度网络 。
LeNet-5不包含输入,由七层组成 。下层由卷积层和最大汇集层交替组成,上层为全凝聚和高斯凝聚 。
LeNet-5的输入不同于BP神经网络的输入 。假设图像是黑白的,LeNet-5的输入是一个32*32的二维矩阵 。同时,输入和下一层没有完全连接,而是稀疏连接 。该层中每个神经元的输入来自前一层神经元的局部区域(55) 。卷积检查将相应的阈值加到原始图像的卷积结果上,得到的结果由激活函数处理,输出形成卷积层(C层) 。卷积层中的每个特征图共享各自的权重和阈值,可以大大降低训练成本 。下采样层(S层)执行二次采样,以便在保留有用信息的同时减少数据量 。
第一个卷积层(C1层)由6个特征图组成,每个特征图是2828个神经元的阵列,其中每个神经元负责通过卷积滤波从55个区域中提取局部特征 。一般来说,滤波器越多,获得的特征图就越多,反映的原始图像特征也就越多 。该层有6(55+1)=156个训练参数,每个像素由上层的55=25个像素和一个阈值连接计算,总共有2,828,156 = 122,304个连接 。
S2层是对应于上述六个特征映射的下采样层(汇集层) 。池层的实现方式有两种,分离最大池和均值池,LeNet-5采用均值池,即取nn区域像素的平均值 。对C122窗口区域的像素进行平均,加上该层的阈值,再通过激活函数的处理得到S2层 。池化的实现,在保留图片信息的基础上,减少了权重参数,降低了计算成本,并且可以掌握过拟合 。该层有1*6+6=12个学习参数,S2的每个像素与C1层的22个像素和一个阈值连接,总共有6(22+1)1414=5880个连接 。
S2层和C3层之间的联系相当复杂 。C3卷积层由16张大小为1010的特征图组成,每张特征图与S2层若干特征图的局部感受野(大小为55)相连 。其中,前六个要素图与S2层的三个持久化要素图相连,后六个图与S2层的四个持久化要素图相连,后三个图与S2层的四个持久化要素图相连,最后一个图与S2层的所有要素图相连 。这里卷积核大小是55,所以有6(355+1)+9(455+1)+1(655+1)= 1516个学习参数 。图像大小为2828,因此有151600个连接 。
S4层是C3层的下采样 。与S2类似,有161+16=32个学习参数和16(22+1)个55=2000个连接 。
C5层是由120张大小为11的特征图组成的卷积层,S4层与C5层完全连通,因此学习参数总数为120(1625+1)=48120 。
F6是84个神经元与C5完全相连,所以有84个(120+1)=10164个学习参数 。
卷积神经网络通过稀疏连接以及权值和阈值的共享,大大降低了计算成本 。同时,池化的实现肯定会减少过拟合问题的出现,非常适合图像处理和识别 。
2.手写数字识别算法模型的构建
2.1各层设计
有了第一节的基础知识,基本上就完善和提高了 。
输入层设计
输入2828的矩阵,而不是向量 。
激活功能的选择
Sigmoid函数具有光滑性、鲁棒性和导数自表达的优点,但其运算涉及指数运算 。用逆流法计算误差梯度时,导数涉及乘法和除法运算,计算量相对较大 。同时,针对本文构造的两个卷积层和下采样层,由于sgmoid函数本身的特性,梯度容易在逆流中淡化,使得网络的训练难以完成 。因此,本文设计的网络采用ReLU函数作为激活函数 。
热禄的表情:
手写识别系统怎么安装 千彩手写识别系统

文章插图
卷积层设计
本文通过离散卷积设计卷积神经网络,卷积步长为1,即每次计算度数和垂直方向时移动一个像素 。卷积核大小为55 。
下采样层
本文中下采样层的汇集方法是最大汇集,大小为22 。
输出层设计
输出层设置为10个神经网络节点 。数字0~9的目的向量如下表所示:
手写识别系统怎么安装 千彩手写识别系统


推荐阅读