卷积和全连接神经网络实现手写数字识别 本文档介绍了使用卷积神经网络和全连接神经网络实现手写数字识别的方法。文档中首先介绍了实验的内容和实验原理,然后详细讲解了全连接神经网络和卷积神经网络的原理和结构。文档还提供了实验步骤,指导读者如何使用 Keras 实现手写数字识别。 一、实验内容 本实验的目的是使用 Keras 实现手写数字识别。实验中,我们将使用 MNIST 数据集,该数据集包含 60000 张手写数字图片,每张图片的大小是 28x28 个像素点。我们将使用全连接神经网络和卷积神经网络两种方法来实现手写数字识别。 二、实验原理 ### 2.1 数据集 MNIST 数据集是手写数字识别的常用数据集。每张图片由 28x28 个像素点构成,每个像素点用一个灰度值表示。可以将这 28x28 个像素展开为一个一维的行向量,作为输入,也就是有 784x1 的向量。 ### 2.2 神经元 人工神经网络(ANN,Artificial Neuron Network)是模拟生物大脑的神经网络结构,它是由许多称为人工神经细胞(Artificial Neuron,也称人工神经元)的细小结构单元组成。简易模型如下所示: x1 … xn:表示神经细胞的输入,也就是输入神经细胞的信号。 w1 … wn:表示每个输入的权重,就好比生物神经网络中每个轴突和树突的连接的粗细,强弱的差异。 b:偏置权重 threshold:偏置(可以将 threshold * b 看作是前面提到的生物神经细胞的阈值) 蓝色部分:细胞体。 黄色球形是所有输入信号以的求和。 红色部分是表示求和之后的信号的激励函数(即达到阈值就处于兴奋状态,反之抑制,当然作为人工神经细胞,其激励函数很多,阶跃(型)激励函数,sigmoid(s 型)激励函数,双曲正切(tanh)激励函数,ReLu(Rectified Linear Units)激励函数等等) ### 2.3 全连接神经网络 全连接神经网络模型是一种多层感知机(MLP),感知机的原理是寻找类别间最合理、最具有鲁棒性的超平面,感知机最具代表的是 SVM 支持向量机算法。神经网络同时借鉴了感知机和仿生学,神经元接受一个信号后会发送各个神经元,各个神经元接受输入后根据自身判断,激活产生输出信号后汇总从而实现对信息源实现识别、分类。 包含两个隐藏层的神经元网络结构如下: 每个结点和下一层所有几点都有运算关系,实践中全连接神经网络通常有多个隐藏层,增加隐藏层可以更好的分离数据的特征,但过多的隐藏层也会增加训练时间以及会产生过拟合。 训练神经网络中需要使用 bp 算法,先是通过前向传播,得到预测结果,再反向传播去调整模型权重。反向传播:反向传播根据前向传播产生的损失函数值,沿输出端向至输入端优化每层之间参数,在此过程中运算利用梯度下降法优化参数,神经网络求解参数本质上仍然是规则中求最优解问题,现在的机器学习框架如 Tensorflow、pytorch、keras 将梯度下降法、Booting、Bagging 这些优化中常用技巧封装起来,我们只用关注数据建模即可。 ### 2.4 卷积神经网络 卷积神经网络可以利用空间结构关系减少需要学习的参数量,提高反向传播算法的训练效率。一般的 CNN 有多个卷积层构成,每个卷积层会进行如下操作: 图像通过多个不同的卷积核的滤波,并加偏置(bias),提取出局部特征,每一个卷积核会映射出一个新的 2D 图像。将前面卷积核的滤波输出结果进行非线性的激活函数处理。对激活函数的结果再进行池化操作(即降采样),目前一般是使用最大池化,保留最显著的特征,并提升模型的畸变容忍能力。 这几个步骤就构成最常见的卷积层,当然也可以在加上一个 LRN 层(Local Response Normalization,局部响应归一化层)。 CNN 的要点是卷积核的权值共享(Weight Sharing)、局部连接模式(Local Connection)和池化层(Pooling)中的降采样(Down-Sampling)。局部连接和权值共享降低了参数量,使训练复杂度大大下降,减轻过拟合并降低计算量。同时权值共享还赋予了 CNN 对平移的容忍性,而池化层降采样则进一步降低了输出层参数,并赋予模型轻度形变的容忍性,提高模型的泛化能力。 每个卷基层包含三个部分:卷积、池化和非线性激活函数使用卷积提取空间特征降采样的平均池化层、双曲正切或 S 型的激活函数、MLP 作为最后的分类器层与层之间的稀疏连接减少计算复杂度。 三、实验步骤 ### 3.1 全连接神经网络实现 1. 获取数据集 Keras 中集成了 MNIST 数据集,直接从其中导入数据,并对数据进行整理。从之可以看出,数据为 28*28,一共 60000 张。 2. 对数据集中的数据进行可视化 3. 对数据进行维度转换把每一张 28 x 28 的图片分别转为长度为 784 的向量,再合并成一个大的像素矩阵,每个维度表示一个像素点的灰度值/255。 4. 对输出结果进行格式转化将经过神经网络训练完后的内容,转化为 10 个类别的概率分布。 本文档介绍了使用卷积神经网络和全连接神经网络实现手写数字识别的方法。使用 Keras 实现手写数字识别可以使用 MNIST 数据集,并使用全连接神经网络和卷积神经网络两种方法来实现手写数字识别
1
1. 数据文件 train.csv 和 test.csv 包含手绘数字的灰度图像,从0到9 2.train.csv 有 label, test.csv 没有 3.每幅图像高28像素,宽28像素,总共784像素 4.每个像素都有一个与之关联的像素值,表示该像素的亮度或暗度,数字越大表示越暗 5.该像素值是0到255之间的整数,包括0和255
2024-08-13 19:43:04 15.25MB 数据集 手写数字识别 python 深度学习
1
现在在企业信息化办公中,用的最多就是微软的Office办公组合,Word、EXCEL、PPT等常用软件。这些软件虽然先进,但是也有其弊端,就是这些软件是产品,产品必然是要符合大部分的人的需要。而在这种信息化大潮当中,各样各业的企业如果想提高自己的工作效率,必然需要符合自己需要的软件公办工具。所以符合本公司自己流程的软件如雨后春笋般层出不穷,百家鸣放各行各业都有相应的专业软件。提高自己的工作效率,降低人力成本,是大势所趋。 基于python的手写数字识别系统的目的就是在于建立属于自己的一套手写识别系统,在日常的工作中,手写识别是一件非常重要的事情,比如说企业或事业单位当中。需要电子版的手签章,那么我们就可以在保存电子版手签章的同时,同样将手签的姓名或者是数字识别出来,保存到数据库当中,实现手签章与数据。对应一致性,这样可以很大程度地进行数据的校验。 关键词:手写数字识别系统;信息技术;python
2024-07-07 16:25:18 6.86MB python
1
手写数字识别python 在这个示例中,我们使用PyTorch实现了一个基于LeNet5模型的手写数字识别器,并在MNIST数据集上进行了训练和测试。代码中包括数据加载、模型定义、损失函数和优化器的声明,以及训练和测试的代码逻辑。需要注意的是,在实际使用过程中,我们需要根据具体的应用场景选择合适的模型结构、损失函数、优化器等,并对数据进行适当的预处理和后处理。
2024-06-28 11:29:51 3KB pytorch pytorch python
1
基于python实现的卷积神经网络手写数字识别系统源码(95分以上课程设计).zip 华中科技大学人工智能与自动化学院 Python课程设计,代码完整下载即用无需修改确保可以运行。 基于python实现的卷积神经网络手写数字识别系统源码(95分以上课程设计).zip 华中科技大学人工智能与自动化学院 Python课程设计,代码完整下载即用无需修改确保可以运行。基于python实现的卷积神经网络手写数字识别系统源码(95分以上课程设计).zip 华中科技大学人工智能与自动化学院 Python课程设计,代码完整下载即用无需修改确保可以运行。基于python实现的卷积神经网络手写数字识别系统源码(95分以上课程设计).zip 华中科技大学人工智能与自动化学院 Python课程设计,代码完整下载即用无需修改确保可以运行。基于python实现的卷积神经网络手写数字识别系统源码(95分以上课程设计).zip 华中科技大学人工智能与自动化学院 Python课程设计,代码完整下载即用无需修改确保可以运行。基于python实现的卷积神经网络手写数字识别系统源码(95分以上课程设计).zi
资源包含文件:设计报告word+源码及数据 使用 Python 实现对手写数字的识别工作,通过使用 windows 上的画图软件绘制一个大小是 28x28 像素的数字图像,图像的背景色是黑色,数字的颜色是白色,将该绘制的图像作为输入,经过训练好的模型识别所画的数字。 手写数字的识别可以分成两大板块:一、手写数字模型的训练;二、手写数字的识别。其中最为关键的环节是手写数字模型的训练。本次选取使用的模型是多元线性回归模型。手写数字有 10 中,分别是 0~9,所以可以将该问题视为一个多分类问题。 详细介绍参考:https://blog.csdn.net/sheziqiong/article/details/125389873
基于Python实现手写数字识别的KNN算法实例
2024-05-22 17:52:20 39KB python 手写数字
1
利用jjupyter notebook来进行基于神经网络的手写数字识别,资源内有完整的代码及相关解释。 利用jupyter notebook来进行基于神经网络的手写数字识别,资源内有完整的代码及相关解释。 利用jjupyter notebook来进行基于神经网络的手写数字识别,资源内有完整的代码及相关解释。 利用jjupyter notebook来进行基于神经网络的手写数字识别,资源内有完整的代码及相关解释。 利用jjupyter notebook来进行基于神经网络的手写数字识别,资源内有完整的代码及相关解释。 利用jupyter notebook来进行基于神经网络的手写数字识别,资源内有完整的代码及相关解释。 利用jupyter notebook来进行基于神经网络的手写数字识别,资源内有完整的代码及相关解释。 利用jupyter notebook来进行基于神经网络的手写数字识别,资源内有完整的代码及相关解释。 利用jupyter notebook来进行基于神经网络的手写数字识别,资源内有完整的代码及相关解释。 利用jupyter notebook来进行基于神经网络的手写数字识别
1
这是21年电赛送药小车基于OpenMV的数字识别部分,多模板匹配的数字模板。详细代码见我博客:https://blog.csdn.net/m0_74800695/article/details/136824120?spm=1001.2014.3001.5502
2024-05-03 16:57:13 37KB
1
基于opencv与机器学习的摄像头实时识别数字,包括完整代码、数据集和训练好的模型。识别准确率高达95%!!代码注释详细,方便理解!代码可以直接运行使用,没有门槛。
2024-04-13 19:52:48 68.25MB opencv 机器学习 数据集 数字识别
1