资源下载地址:https://download.csdn.net/download/sheziqiong/85884967
资源下载地址:https://download.csdn.net/download/sheziqiong/85884967

利用 CNN 进行手写数字识别

实验目的和要求

利用 CNN 进行手写数字识别

框架:TenserFlow(PyTorch 也行)

数据集:The Mnist Database of handwritten digits

网络结构:LeNet-5;

具体任务:

利用上述数据集/网络结构/框架实现手写数字识别,可以参考代码

参考链接:

实验内容和原理

CNN

卷积神经网络(CNN)是一种特殊的多层神经网络。像几乎所有其他的神经网络一样,它也是用反向传播算法来训练的,只是用特殊结构来以更少的预处理识别像素图中的 pattern。而且它对一些简单的几何变换有一定的鲁棒性。

基础的 CNN 由卷积(convolution), 激活(activation), 和池化(pooling)三种结构组成。当处理图像分类任务时,我们会把 CNN 输出的特征空间作为全连接层或全连接神经网络(fully connected neural network, FCN)的输入,用全连接层来完成从输入图像到标签集的映射,即分类。当然,整个过程最重要的工作就是如何通过训练数据迭代调整网络权重,也就是后向传播算法。目前主流的卷积神经网络(CNNs),比如 VGG, ResNet 都是由简单的 CNN 调整,组合而来。
卷积过程就是 kernel 所有权重与其在输入图像上对应元素亮度之和,即

池化

池化(pooling),是一种降采样操作(subsampling),主要目标是降低 feature maps 的特征空间,或者可以认为是降低 feature maps 的分辨率。因为 feature map 参数太多,而图像细节不利于高层特征的抽取。

Pooling 操作会降低参数,降低 feature maps 的分辨率,但是这种暴力降低在计算力足够的情况下是不是必须的,并不确定。目前一些大的 CNNs 网络只是偶尔使用 pooling。

全连接网络

不同于 CNN 的滑动卷积,全连接网络每一层的所有单元与上一层完全连接。对于第 l 层的第 i 个神经元,它的输出计算方式是,

目标函数和训练方法

假设得到的误差为 E,则在更新时有有

其中

是 learning rate,相当于每次学习的步长。然后通过 BP 来一层层往前调整参数进行学习。

BP 算法通过以下四个公式更新:

LeNet-5

是一种用来进行手写字母识别的网络,LeNet-5 中主要有 2 个卷积层、2 个下抽样层(池化层)、3 个全连接层,如图。


实验步骤与分析

实验中试了各种 optimizer 和 loss 函数,发现效果差距很大。

然后尝试了对自己用画图制作的数据集进行识别,效果也不错。

实验结果

学习率都是 0.01,只是换了 Loss 和 Optimizer,效果差异显著 x

Loss:直接返回 X,Optimizer:Adadelta




资源下载地址:https://download.csdn.net/download/sheziqiong/85884967
资源下载地址:https://download.csdn.net/download/sheziqiong/85884967

利用CNN进行手写数字识别相关推荐

  1. CNN之手写数字识别(Handwriting Recognition)

    CNN之手写数字识别(Handwriting Recognition) 目录 CNN之手写数字识别(Handwriting Recognition) 1.常用的包 2.常见概念 3.手写数字识别器实现 ...

  2. 图像识别:利用KNN实现手写数字识别(mnist数据集)

    图像识别:利用KNN实现手写数字识别(mnist数据集) 步骤: 1.数据的加载(trainSize和testSize不要设置的太大) 2.k值的设定(不宜过大) 3.KNN的核心:距离的计算 4.k ...

  3. 基于CNN的手写数字识别

    基于CNN的手写数字识别 文章目录 基于CNN的手写数字识别 零. 写在之前 壹. 聊聊CNN 01. 什么是CNN 02. 为什么要有CNN 03. CNN模型 3.1 卷积层 3.2 池化层 3. ...

  4. 卷积神经网络(cnn) 手写数字识别

    1. 知识点准备 在了解 CNN 网络神经之前有两个概念要理解,第一是二维图像上卷积的概念,第二是 pooling 的概念. a. 卷积 关于卷积的概念和细节可以参考这里12,卷积运算有两个非常重要特 ...

  5. 简陋的CNN实现手写数字识别

    文章目录 前言 背景知识 Neural Network Backpropagation CNN pytorch 介绍 代码 CNN模型 训练&测试 前言 日常翘课,但是作业还是要写的. 数据集 ...

  6. 深蓝学院第三章:基于卷积神经网络(CNN)的手写数字识别实践

    参看之前篇章的用全连接神经网络去做手写识别:https://blog.csdn.net/m0_37957160/article/details/114105389?spm=1001.2014.3001 ...

  7. 利用Tensorflow实现手写数字识别(附python代码)

    手写识别的应用场景有很多,智能手机.掌上电脑的信息工具的普及,手写文字输入,机器识别感应输出:还可以用来识别银行支票,如果准确率不够高,可能会引起严重的后果.当然,手写识别也是机器学习领域的一个Hel ...

  8. Python仿真及应用结课大作业—基于CNN的手写数字识别与涂鸦识别

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.结课文档目录 二.涂鸦识别(篇幅问题只展示其一) 涂鸦识别 引入必要的库函数 导入数据 为各个数据文件添加标签 数 ...

  9. 用CNN实现手写数字识别

    一.模型结构 用户输入的图像是一个784维的向量x,我们按照以下步骤搭建网络: 1.把x整形为[28, 28, 1]的灰度图 2.用一次3x3的卷积操作从x中抽象出32个基本特征,图像形状变成[28, ...

最新文章

  1. Mybatis底层原理学习(二):从源码角度分析一次查询操作过程
  2. 一致性哈希算法——算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据...
  3. SSH的各个配置文件:
  4. 计算机网络(九)-物理层(补充)-傅里叶变换-信道复用
  5. 自适应滤波器原理第四版计算机实验,自适应滤波器原理(中文第4版)答案
  6. 对计算机辅助英语的看法,论我国计算机辅助英语笔译的必要性
  7. linux动态追踪神器——Strace实例介绍【转】
  8. 掌握面试——弹出框的实现
  9. MTK-QCOM-SPRD 刷机
  10. 教你如何使用数字组件,制作有灵魂的数据可视化大屏
  11. 如何通过蓝牙将PC与Windows Mobile 6的手持机连接,方便调试。
  12. java_home环境变量_配置home环境变量
  13. 同一个浏览器多用户同时登录的解决方案
  14. qtcpsocket断开_关于QSocket的释放的一个需要注意的情况(必须先断开连接)
  15. iwifi 技术规范
  16. 腾讯云服务器云硬盘如何快速扩容!
  17. 应用场景:征信和权属管理
  18. iOS音视频实现边下载边播放
  19. ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed问题解决
  20. 1000桶水,其中一桶有毒,猪喝毒水后会在15分钟内死去,想用一个小时找到这桶毒水,至少需要几头猪?具体该如何实现方法讲解

热门文章

  1. MySQL 5.7.40 安装配置
  2. 安装nvidia驱动报错解决方案
  3. 独立站如何精准引流及提高订单转化率
  4. 互联网设备信息:Censys
  5. 马克思手稿中的趣味数学题(百钱百鸡问题人类版)
  6. 【爬虫学习2】Requests cookies爬取知乎个人timeline
  7. wifi动不动就断开_手机连上wifi却经常“卡顿”一下,断网频繁出现?四步即可解决...
  8. php 无限极分类树,php无限极分类 类 tree.class.php
  9. vue element ui跳转页获取跳转前页面列表里的行id
  10. 画论08 裴孝源《贞观公私画史》