利用CNN进行手写数字识别
资源下载地址: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进行手写数字识别相关推荐
- CNN之手写数字识别(Handwriting Recognition)
CNN之手写数字识别(Handwriting Recognition) 目录 CNN之手写数字识别(Handwriting Recognition) 1.常用的包 2.常见概念 3.手写数字识别器实现 ...
- 图像识别:利用KNN实现手写数字识别(mnist数据集)
图像识别:利用KNN实现手写数字识别(mnist数据集) 步骤: 1.数据的加载(trainSize和testSize不要设置的太大) 2.k值的设定(不宜过大) 3.KNN的核心:距离的计算 4.k ...
- 基于CNN的手写数字识别
基于CNN的手写数字识别 文章目录 基于CNN的手写数字识别 零. 写在之前 壹. 聊聊CNN 01. 什么是CNN 02. 为什么要有CNN 03. CNN模型 3.1 卷积层 3.2 池化层 3. ...
- 卷积神经网络(cnn) 手写数字识别
1. 知识点准备 在了解 CNN 网络神经之前有两个概念要理解,第一是二维图像上卷积的概念,第二是 pooling 的概念. a. 卷积 关于卷积的概念和细节可以参考这里12,卷积运算有两个非常重要特 ...
- 简陋的CNN实现手写数字识别
文章目录 前言 背景知识 Neural Network Backpropagation CNN pytorch 介绍 代码 CNN模型 训练&测试 前言 日常翘课,但是作业还是要写的. 数据集 ...
- 深蓝学院第三章:基于卷积神经网络(CNN)的手写数字识别实践
参看之前篇章的用全连接神经网络去做手写识别:https://blog.csdn.net/m0_37957160/article/details/114105389?spm=1001.2014.3001 ...
- 利用Tensorflow实现手写数字识别(附python代码)
手写识别的应用场景有很多,智能手机.掌上电脑的信息工具的普及,手写文字输入,机器识别感应输出:还可以用来识别银行支票,如果准确率不够高,可能会引起严重的后果.当然,手写识别也是机器学习领域的一个Hel ...
- Python仿真及应用结课大作业—基于CNN的手写数字识别与涂鸦识别
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.结课文档目录 二.涂鸦识别(篇幅问题只展示其一) 涂鸦识别 引入必要的库函数 导入数据 为各个数据文件添加标签 数 ...
- 用CNN实现手写数字识别
一.模型结构 用户输入的图像是一个784维的向量x,我们按照以下步骤搭建网络: 1.把x整形为[28, 28, 1]的灰度图 2.用一次3x3的卷积操作从x中抽象出32个基本特征,图像形状变成[28, ...
最新文章
- Mybatis底层原理学习(二):从源码角度分析一次查询操作过程
- 一致性哈希算法——算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据...
- SSH的各个配置文件:
- 计算机网络(九)-物理层(补充)-傅里叶变换-信道复用
- 自适应滤波器原理第四版计算机实验,自适应滤波器原理(中文第4版)答案
- 对计算机辅助英语的看法,论我国计算机辅助英语笔译的必要性
- linux动态追踪神器——Strace实例介绍【转】
- 掌握面试——弹出框的实现
- MTK-QCOM-SPRD 刷机
- 教你如何使用数字组件,制作有灵魂的数据可视化大屏
- 如何通过蓝牙将PC与Windows Mobile 6的手持机连接,方便调试。
- java_home环境变量_配置home环境变量
- 同一个浏览器多用户同时登录的解决方案
- qtcpsocket断开_关于QSocket的释放的一个需要注意的情况(必须先断开连接)
- iwifi 技术规范
- 腾讯云服务器云硬盘如何快速扩容!
- 应用场景:征信和权属管理
- iOS音视频实现边下载边播放
- ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed问题解决
- 1000桶水,其中一桶有毒,猪喝毒水后会在15分钟内死去,想用一个小时找到这桶毒水,至少需要几头猪?具体该如何实现方法讲解
热门文章
- MySQL 5.7.40 安装配置
- 安装nvidia驱动报错解决方案
- 独立站如何精准引流及提高订单转化率
- 互联网设备信息:Censys
- 马克思手稿中的趣味数学题(百钱百鸡问题人类版)
- 【爬虫学习2】Requests cookies爬取知乎个人timeline
- wifi动不动就断开_手机连上wifi却经常“卡顿”一下,断网频繁出现?四步即可解决...
- php 无限极分类树,php无限极分类 类 tree.class.php
- vue element ui跳转页获取跳转前页面列表里的行id
- 画论08 裴孝源《贞观公私画史》