手写数字识别-基于卷积神经网络

这篇具有很好参考价值的文章主要介绍了手写数字识别-基于卷积神经网络。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🌞欢迎来到机器学习的世界 
🌈博客主页:卿云阁

 💌欢迎关注🎉点赞👍收藏⭐️留言📝

🌟本文由卿云阁原创!

🌠本阶段属于练气阶段,希望各位仙友顺利完成突破

📆首发时间:🌹2021年6月5日🌹

✉️希望可以和大家一起完成进阶之路!

🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!

2022年 6月27日 天气小雨


目录

🍈 一、必备知识

 🍉二. 神经网络

🍊三、卷积神经网络的介绍

手写数字识别-基于卷积神经网络

🍈 一、必备知识

(1)手写数字

       机器识图的过程:机器识别图像并不是一下子将一个复杂的图片完整识别出来,而是将一个完整的图片分割成许多个小部分,把每个小部分里具有的特征提取出来(也就是识别每个小部分),再将这些小部分具有的特征汇总到一起,就可以完成机器识别图像的过程了。

(2)手写识别数据集
      MNIST包含 70000 张手写数字图像: 60000 张用于训练; 10000 张用于测试。 28x28 像素的灰度图。
手写数字识别-基于卷积神经网络

(3)数字的表示(28*28)

在灰色图中会把每一个像素用(0-255之间的数字表示,越接近白色,数字越接近255)

手写数字识别-基于卷积神经网络

      一张图像数据有一个东西叫做颜色通道,比如常见的jpg格式的图像,就三颜色通道(RGB红色、绿色、蓝色)一张有颜色的图像由一个三维数组表示。因此,要表示彩色值,我们需要3个维度,也就是3个图像通道,每个像素值用3个数字表示,如(255,255,255)表示白色,(255,0,0)表示红色,(255,255,0)表示黄色。

手写数字识别-基于卷积神经网络

手写数字识别-基于卷积神经网络

 为了存储图像,计算机要存储三个独立的矩阵,为了存储图像,计算机要存储三个独立的矩阵。

(4)矩阵变换

数据集一共60000张,相当于60000张28*28的纸片摞起来。

因为有些函数只能处理二维数据,所以我们要想办法把数据降到二维。 

数据集相当于

(60000, 784)的一个矩阵

手写数字识别-基于卷积神经网络

(5)归一化

     经过归一化处理后,每张图片由1*784的矩阵组成,矩阵中的每一个元素由(0-1)的数字组成。 

 手写数字识别-基于卷积神经网络

(6)标签的表示

把标签用一个一维数组表示。

5

array([0, 0, 0, 0, 0, 1, 0, 0, 0, 0], dtype=uint8)

手写数字识别-基于卷积神经网络


 🍉二. 神经网络

基本介绍

手写数字识别-基于卷积神经网络

 在这里,我们可以把加权看成是树突的作用,把阈值和激活函数看成是细胞核的处理

得分函数

假设有四个像素点,每一个像素对应一个权重,因为各个点的影响程度不同。我们把w叫做权重参数,b表示偏置参数。

手写数字识别-基于卷积神经网络

 手写数字识别-基于卷积神经网络

损失函数(不同的任务需要不同的损失函数)

神经网络既可以做分类也可以做回归,针对不同的功能,需要不同的损失函数

手写数字识别-基于卷积神经网络

 手写数字识别-基于卷积神经网络

 


手写数字识别-基于卷积神经网络

手写数字识别-基于卷积神经网络

神经网络回顾(Neural Network)
手写数字识别-基于卷积神经网络

一个简单的神经网络模型由三个部分组成,输入层,隐藏层,输出层

前向传播 Forward propagation 

手写数字识别-基于卷积神经网络

      每个神经元都 对它的 输入和权重相乘再相加 ,然后 加上偏置 ,最后使 用非线性 激活函数 ,重复此 过程,直至传 递到输出层, 得出预测概率。
在这里,我们可以把加权看成是 树突的作用,把阈值和激活函数看成是 细胞核的处理

手写数字识别-基于卷积神经网络

   输入层表示输入图像( 64 维向量)本身。如果将各个点的像素值存储在长度为 64 的一维数组的元 素中,则可以将其视为 64 维数据来处理。下面通过神经网络来学习使用上述方法得到的 64 维数据。
  中间层使用 Sigmoid 等非线性函数计算输入层传来的数据。中间层的维度是超参数。使维度变 大可以学习更加复杂的边界,但是容易发生过拟合。本次设置中间层为 16 维。下面的“算法说明” 部分将再次介绍中间层的计算方法、中间层的维度和学习结果的关系。
  输出层也同样使用非线性函数计算中间层传来的数据。本次任务是对 0 9 10 个数字进行 分类。因此,输出层输出的是输入手写图像分别为 0 9 10 个数字的概率。
 反向传播 Back propagation  
手写数字识别-基于卷积神经网络
手写数字识别-基于卷积神经网络
训练过程:找到使得损失函数最小的权重。
梯度下降:求得每个参数相对于损失函数的偏导,
用偏导数乘以学习率得到需要改变的量,用原权重减去改变的量,得到新的权重。
再进行正向传播,计算新的损失值,重复此过程
使得损失函数为零或在设定的范围,完成训练。
损失函数loss
a是预测值,y是样本标签值
手写数字识别-基于卷积神经网络

  目的是让损失函数越小越好,我们的目的是找到loss的最小值,loss的值与(w,b)组成,其中,我们用表示(w,b),loss是关于其的一个函数。

损失函数图像

手写数字识别-基于卷积神经网络

神经网络的整体架构

 神经网络是一层层变换数据的,全连接,目的是让计算机认识,隐藏层的目的是为了增加特征,比如输入是age,w,h其目的是为了特征的转换,是更好的特征

手写数字识别-基于卷积神经网络
手写数字识别-基于卷积神经网络

 

🍊三、卷积神经网络的介绍

网络结构手写数字识别-基于卷积神经网络

卷积神经网络识别图像

  1. 卷积层初步提取特征

  2. 池化层提取主要特征

  3. 全连接层将各部分特征汇总

  4. 产生分类器,进行预测识别

通过CNN来区别两类。 

手写数字识别-基于卷积神经网络

要求我们要区分一些不标准的图片,所以我们要提取特点。

手写数字识别-基于卷积神经网络

 把这些特征提取出来作为卷积核(实际上的卷积核需要计算机不断的寻找)

手写数字识别-基于卷积神经网络

 卷积的过程

手写数字识别-基于卷积神经网络

1*1,-1*-1,等依次计算,填满该矩阵,填满之后加起来然后除于9的得到一个值,即为选定局域得到的中心值的结果。

得到了7*7像素的特征图 ,(该卷积核作用于该图片上的卷积结果)

特征图上,保留了原始图像的特征,在特征图上体现卷积核的特征位置的点越接近于1.

手写数字识别-基于卷积神经网络

对提取出来的三个特征的卷积核,与图像卷积,得到三个特征图。

手写数字识别-基于卷积神经网络

池化的过程手写数字识别-基于卷积神经网络

 以四个为一组做最大的池化,依次移动方格,得到三张减参特征图手写数字识别-基于卷积神经网络

手写数字识别-基于卷积神经网络

 得到三张4*4的减参特征图手写数字识别-基于卷积神经网络

 激活函数

手写数字识别-基于卷积神经网络

在这里我们使用relu激活函数(0,和本身)提高运算效率,便于进行非线性运算,

手写数字识别-基于卷积神经网络通过对卷积,池化,激活,像搭积木一样的叠加,把9*9的原始图像变成3张2*2的特征图。手写数字识别-基于卷积神经网络

借助神经网络进行分类,首先把三张2*2的特征图展平,作为神经网络的的输入进行神经网络的计算。 

手写数字识别-基于卷积神经网络

步长是指卷积时,卷积核移动的方格的个数。加边的目的是为了捕捉到边缘的信息。

手写数字识别-基于卷积神经网络

维度变换 (长宽的变换步长和加边规则是由,厚度是由卷积核的数量)

 手写数字识别-基于卷积神经网络

手写数字识别-基于卷积神经网络

训练的目的是为了的到卷积核的内容和偏置项。

如果图片是彩色的,用三维数组表示。

手写数字识别-基于卷积神经网络文章来源地址https://www.toymoban.com/news/detail-498710.html

到了这里,关于手写数字识别-基于卷积神经网络的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习第一周:用卷积神经网络实现Mnist手写数字识别(付基础知识解释)

    MNIST 数据集是一个手写数字识别数据集,包含了 60000 张训练图像和 10000 张测试图像,每张图像都是 28x28 像素的灰度图像。 在这个代码中,我们首先使用了 numpy 库中的 np.random.seed() 方法来设置随机种子,以确保结果可重复。 然后,我们使用了 Keras 中的 mnist.load_data() 方法来

    2024年02月08日
    浏览(30)
  • 真的不能再详细了,2W字保姆级带你一步步用Pytorch搭建卷积神经网络实现MNIST手写数字识别

    目录 一、引言(环境)  二、正文 1. 代码基本情况介绍 2. MNIST数据集介绍         3. 代码输出结果介绍 数据集取样: 训练信息输出: 前三次训练成果以及预测: 八次训练的结果:  4. 代码拆解讲解 基本的参数设定 MNIST数据集下载、保存与加载 神经网络模型 训练前的准

    2023年04月20日
    浏览(28)
  • 基于python的Keras库构建的深度神经网络手写数字识别模型

    目录 模型训练过程 ①导入所需的库 ②加载手写体数据集,将数据集分为训练集和测试集 ③数据预处理 ④构建模型 ⑤编译模型 ⑥训练模型 ⑦使用测试集进行验证 ⑧输出模型准确率和时间消耗 完整代码如下: 模型训练过程 使用到的数据集为IMDB电影评论情感分类数据集,该

    2024年02月09日
    浏览(30)
  • 入门深度学习——基于全连接神经网络的手写数字识别案例(python代码实现)

    1.1 问题导入 如图所示,数字五的图片作为输入,layer01层为输入层,layer02层为隐藏层,找出每列最大值对应索引为输出层。根据下图给出的网络结构搭建本案例用到的全连接神经网络 1.2 手写字数据集MINST 如图所示,MNIST数据集是机器学习领域中非常经典的一个数据集,由6

    2024年02月03日
    浏览(35)
  • 【卷积神经网络】MNIST 手写体识别

    LeNet-5 是经典卷积神经网络之一,于 1998 年由 Yann LeCun 等人提出。LeNet-5 网络使用了卷积层、池化层和全连接层,实现可以应用于手写体识别的卷积神经网络。TensorFlow 内置了 MNIST 手写体数据集,可以很方便地读取数据集,并应用于后续的模型训练过程中。本文主要记录了如

    2024年02月11日
    浏览(31)
  • 计算机竞赛 卷积神经网络手写字符识别 - 深度学习

    🔥 优质竞赛项目系列,今天要分享的是 🚩 卷积神经网络手写字符识别 - 深度学习 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/d

    2024年02月12日
    浏览(31)
  • 在树莓派上实现numpy的conv2d卷积神经网络做图像分类,加载pytorch的模型参数,推理mnist手写数字识别,并使用多进程加速

    这几天又在玩树莓派,先是搞了个物联网,又在尝试在树莓派上搞一些简单的神经网络,这次搞得是卷积识别mnist手写数字识别 训练代码在电脑上,cpu就能训练,很快的: 然后需要自己在dataset里导出一些图片:我保存在了mnist_pi文件夹下,“_”后面的是标签,主要是在pc端导

    2024年02月07日
    浏览(24)
  • 手写数字识别--神经网络实验

     我自己搞的代码,预测精度才94% 神经网络实验报告源码.zip - 蓝奏云  老师给的实验源码答案和资料,预测精度高达99% 深度学习实验报告.zip - 蓝奏云 上深度学习的课程,老师布置了一个经典的实验报告,我做了好久才搞懂,所以把实验报告放到CSDN保存,自己忘了方便查阅

    2024年02月06日
    浏览(31)
  • 神经网络基础-手写数字识别

    基本原理 图像本质上被认为是一个矩阵,每个像素点都是一个对应的像素值,相当于在多维数据上进行相关的归类或者其他操作。 线性函数 线性函数的一个从输入到输出的映射,用于给目标一个每个类别对应的得分。 图像 ( 32 ∗ 32 ∗ 3 ) → f ( x , W ) Y 图像(32*32*3) stackrel{

    2024年02月02日
    浏览(28)
  • 6.6 实现卷积神经网络LeNet训练并预测手写体数字

    isinstance(net,nn.Module)是Python的内置函数,用于判断一个对象是否属于制定类或其子类的实例。如果net是nn.Module类或子类的实例,那么表达式返回True,否则返回False. nn.Module是pytorch中用于构建神经网络模型的基类,其他神经网络都会继承它,因此使用 isinstance(net,nn.Module),可以确

    2024年02月14日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包