基于TensorFlow的卷积神经网络实现手写数据识别

目录

一、前言

二、卷积神经网络

三、LeNet

1、结构模型

三、手写体数字识别实现

1、手写体数字数据选取

2、训练数据

3、测试数据

4、识别结果

5、结果分析

参考文章


一、前言

卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一。卷积神经网络是一种多层神经网络,擅长处理图像特别是大图像的相关机器学习问题。卷积网络能够通过一系列方法,成功将数据量庞大的图像识别问题不断降维,最终使其能够被训练。相较于其他神经网络结构,卷积神经网络需要的参数相对较少,这也是卷积神经网络能够被广泛应用的原因。本文将介绍一种经典的卷积神经网络的网络结构—LeNet模型并以此实现手写数据集的识别

二、卷积神经网络

我们先比较一下BP神经网络和卷积神经网络。BP神经网络是采用全连接,权值太多,需要很多样本去训练,计算困难。这引导我们可以减少权值的尝试,采用局部连接的方法改进算法的效率和复杂度。而卷积神经网络可以利用局部感知野,即认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较为紧密,而距离较远的像素相关性则较弱。因此,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。而且卷积神经网络可以通过权值共享降低参数数目,减轻计算量。(ps:在每个重点词汇都有相应的链接,如果有疑问可以直接点击查看)

如上图,如果采用BP神经网络方式对一张图片进行分类,那就要将图片上的每个像素都连接到隐藏层节点上,则对于一张1000x1000像素的图片,如果我们有1M隐藏层单元,那么一共有10^12个参数,这显然是不能接受的。而对于卷积神经网络,我们可以假设最底层特征都是局部性的,图像上不同小片段,以及不同图像上的小片段的特征是类似的。那我们就只需用10x10这样大小的过滤器就能表示边缘等底层特征,并且可以用同样的一组分类器(窗口重叠采样)来描述各种各样不同的图像,避免了边缘效应。即如下图所示:

卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。

三、LeNet

LeNet是一个最典型的卷积神经网络,由卷积层、池化层、全连接层组成。其中卷积层与池化层配合,组成多个卷积组,逐层提取特征,最终通过若干个全连接层完成分类,其结构如下图。

1、结构模型

我们来具体看下这个结构

首先是INPUT层-输入层

这里输入的是尺寸统一归一化为32*32的手写体数字图像。

在每个卷积层,数据都是以三维形式存在的。你可以把它看成许多个二维图片叠在一起,其中每一个称为一个feature map。每个层都含有多个feature map,每个feature map通过一种卷积滤波器提取输入的一种特征,然后每个feature map有多个神经元。

第一层 C1层-卷积层

通过卷积运算,可以使原信号特征增强,并且降低噪音。此层形成6个feature map,每个feature map使用的一个5x5的卷积核(卷积的输入区域大小是5x5,每个feature map内参数共享,即每个feature map内只使用一个共同卷积核,卷积核有5x5个连接参数加上1个偏置共26个参数。卷积区域每次滑动一个像素,这样卷积层形成的每个特征图谱大小是(32-5)/1+1=28x28。C1层共有26x6=156个训练参数,有(5x5+1)x28x28x6=122304个连接。有122304个连接,但是我们只需要学习156个参数,主要是通过权值共享实现的。卷积核如下图所示:

第二层 S2层-池化层(下采样层)

此层为pooling层,为减少数据处理量同时保留有用信息,利用图像局部相关性的原理,对图像进行子抽样,即下采样。C1层的6个28x28的feature map分别进行以2x2为单位的下抽样(池化),得到了S2即6个14x14的feature map(28/2=14)。S2这个pooling层是对C1中的2x2区域内的像素求和乘以一个权值系数再加上一个偏置,然后将这个结果再做一次映射。同时有5x14x14x6=5880个连接。

第三层 C3层-卷积层
C3层是一个卷积层,卷积核与C1相同,不同的是C3的每个节点与S2中的多个图相连。如下左图所示,第一个红框表示C3的前6个feature map与S2层相连的3个feature map相连接,第二个红框表示后面6个feature map与S2层相连的4个feature map相连接,第三个红框则说明后面3个feature map与S2层部分不相连的4个feature map相连接,最后一个与S2层的所有feature map相连。C3层有16个10x10(14-5+1)的图,每个图与S2层的连接的方式如下面右图所示。C3与S2中前3个图相连的卷积结构见下图.这种不对称的组合连接的方式有利于提取多种组合特征。该层有(5x5x3+1)x6 + (5x5x4 + 1) x 3 + (5x5x4 +1)x6 + (5x5x6+1)x1 = 1516个训练参数,共有1516x10x10=151600个连接。 

            

第四层 S4层-池化层

S4是pooling层,窗口大小仍然是2x2,共计16个feature map,C3层的16个10x10的图分别进行以2x2为单位的池化得到16个5x5的特征图。有5x5x5x16=2000个连接。连接的方式与S2层类似。

第五

  • 5
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值