基于卷积神经网络的mnist手写体识别

2023-11-01

基于卷积神经网络的mnist手写体识别

1、卷积神经网络

1.1、什么是卷积神经网络

首先,卷积神经网络的概念,百度是这么给出解释的——卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一 。卷积神经网络具有表征学习(representation learning)能力,能够按其阶层结构对输入信息进行平移不变分类(shift-invariant classification),因此也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Networks, SIANN)。

太长了。简单的理解一下,卷积神经网络(CNN)其实就是一种人工神经网络。它很擅长于处理图像特别是大图像的相关机器学习问题。

1.2、卷积神经网络的原理

我们所熟知的神经网络的构成如图:
在这里插入图片描述
其实卷积神经网络依然是层级网络,但是其中的层的功能做了一些变化,即传统神经网络的优化。

一个卷积神经网络由很多层组成,它们的输入是三维的,输出也是三维的,有的层有参数,有的层不需要参数。

其中除了输入层和输出层。卷积神经网络的隐含层通常包括以下几种层:
1、卷积层
2、池化层
3、全连接层
在一些更为现代的算法中可能有Inception模块、残差块(residual block)等复杂构筑。

卷积层:
1、卷积核

积层的功能是对输入数据进行特征提取,其内部包含多个卷积核,组成卷积核的每个元素都对应一个权重系数和一个偏差量(bias vector),类似于一个前馈神经网络的神经元(neuron)。卷积层内每个神经元都与前一层中位置接近的区域的多个神经元相连,区域的大小取决于卷积核的大小。卷积核在工作时,会有规律地扫过输入特征,在感受野内对输入特征做矩阵元素乘法求和并叠加偏差量:
在这里插入图片描述式中的求和部分等价于求解一次交叉相关(cross-correlation)。b为偏差量,
Zl和Zl+1表示第l+1层的卷积。
也被称为特征图(feature map),
Ll+1为Zl+1的尺寸,这里假设特征图长宽相同。
Z(i,j)对应特征图的像素,K为特征图的通道数,
f、s0和p是卷积层参数,对应卷积核大小、卷积步长(stride)和填充层数(padding)层数 。
在这里插入图片描述
2、卷积层参数
卷积层参数包括卷积核大小、步长和填充,三者共同决定了卷积层输出特征图的尺寸,是卷积神经网络的超参数。其中卷积核大小可以指定为小于输入图像尺寸的任意值,卷积核越大,可提取的输入特征越复杂。
卷积步长定义了卷积核相邻两次扫过特征图时位置的距离,卷积步长为1时,卷积核会逐个扫过特征图的元素,步长为n时会在下一次扫描跳过n-1个像素。

3、激励函数
卷积层中包含激励函数以协助表达复杂特征,其表示形式如下:
在这里插入图片描述

池化层:
在卷积层进行特征提取后,输出的特征图会被传递至池化层进行特征选择和信息过滤。池化层包含预设定的池化函数,其功能是将特征图中单个点的结果替换为其相邻区域的特征图统计量。池化层选取池化区域与卷积核扫描特征图步骤相同,由池化大小、步长和填充控制。

全连接层:
全连接层的作用就是把所有局部特征结合变成全局特征,用来计算最后每一类的得分。
卷积神经网络中的全连接层等价于传统前馈神经网络中的隐含层。全连接层通常搭建在卷积神经网络隐含层的最后部分,并只向其它全连接层传递信号。特征图在全连接层中会失去3维结构,被展开为向量并通过激励函数传递至下一层。
【原理部分参考百度百科】

2、手写体识别

利用卷积神经网络进行mnist手写体识别。
以下是两种训练代码。
注意:下面的两个代码是要用到TensorFlow的,至于是安装GPU版本的还是CPU版本的,看个人喜好。
但是我使用的是CPU版本的,因为安装方便,但是运行速度不如GPU快。

2.1、两份代码

1、trainMnistFromImages.py

#coding:utf8
import os
import cv2
import numpy as np
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

sess = tf.InteractiveSession()


def getTrain():
    train=[[],[]] # 指定训练集的格式,一维为输入数据,一维为其标签
    # 读取所有训练图像,作为训练集
    train_root="Mnist手写体训练\mnist_train" 
    labels = os.listdir(train_root)
    for label in labels:
        imgpaths = os.listdir(os.path.join(train_root,label))
        for imgname in imgpaths:
            img = cv2.imread(os.path.join(train_root,label,imgname),0)
            array = np.array(img).flatten() # 将二维图像平铺为一维图像
            array=MaxMinNormalizat
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于卷积神经网络的mnist手写体识别 的相关文章

  • 如何查看Databricks中的所有数据库和表

    我想列出 Azure Databricks 中每个数据库中的所有表 所以我希望输出看起来像这样 Database Table name Database1 Table 1 Database1 Table 2 Database1 Table
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 使 django 服务器可以在 LAN 中访问

    我已经安装了Django服务器 可以如下访问 http localhost 8000 get sms http 127 0 0 1 8000 get sms 假设我的IP是x x x x 当我这样做时 从同一网络下的另一台电脑 my ip
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2

随机推荐

  • oracle 11g open_cursors 修改,修改open_cursors和session_cached_cursors的参数值

    用oracle 的ADDM生产了报告 其中建议修改open cursors和session cached cursors的参数值 如 FINDING 3 15 impact 1673 seconds Soft parsing of SQL
  • 修改springboot依赖jar包默认版本

    有两种方法 一 用idea开发工具可以直接改 但是不治本 eclipse导入后又恢复了 eclipse无法改 二 直接使用maven版本管理标签
  • 大厂经典Docker面试题整理汇总

    1 什么是 Docker Docker是一个容器化平台 它以容器的形式将你的应用程序及所有的依赖项打包在一起 以确保你的应用程序在任何环境中无缝运行 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级 可移植的容器中 然后发布到
  • 海外社交平台(Facebook Twitter WhatsApp)的分享

    海外的社交平台没有像Mob一样的集成sdk 各有各的sdk 掉进几次坑里 在此记录一下 三个平台都可以同时分享图片 链接 文字 Facebook facebook分享的图片需是来自网络的图片url sdk注释 Set the URL of
  • 华为机试:蛇形矩阵#include<iostream>using namespace std;int main(){ int N; while(cin>>N) {

    一 题目 描述 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形 例如 当输入5时 应该输出的三角形为 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 请注意本题含有多组样例输入 输入描述 输入正整数N N不大
  • 【VS调试】1.0-本地代码附加到软件进程进行调试(VS2019)

    本地代码附加到软件进程进行调试 当运行的exe程序调用了某个dll 想要调试dll中的代码 则可按照以下两个步骤 将需要调试的代码项目附加到已运行的程序即可在代码项目中进行打断点等代码调试工作 调试 gt 附加到进程 2 选择本地代码 并搜
  • Cobalt Strike从入门到精通之用户驱动攻击包

    https www bilibili com video BV1P64y1f7e1 p 5 Cobalt Strike 用户驱动攻击包 Attack Packages HTML Application 首先打开Attack gt Packa
  • python王者归来—学习笔记(20)

    继续第十六章 正则表达式 一 正则表达式特殊字符 我们知道 d代表的是数字字符 也就是从0 9的阿拉伯数字 如果使用管道 的观念 d相当于是下列正则表达式 0 1 2 3 4 5 6 7 8 9 正则表达式的特殊字符说明如下 import
  • 十、Spring Boot 安全管理(3)

    本章概要 高级配置 10 3 高级配置 10 3 1 角色继承 10 2 节中定义了三种角色 但是这三种角色之间不具备任何关系 一般来说角色之间是有关系的 例如 ROLE admin 一般既具有 admin 权限 又具有 user 权限 那
  • bat脚本——提取多个文件夹到指定路径

    本文将使用windows下的批处理 bat 脚本实现文件复制的一些功能 核心内容在于创建bat脚本 dir和xcopy等命令的使用 xcopy和dir命令使用说明 windows系统下打开命令提示符 cmd 输入以下命令可以查看dir和xc
  • python把txt变成list,并且写入xslx文件

    需求 1 把txt文件的内容变成list 2 然后写入excel中 txt文件内容 IP txt 192 168 199 201 4C8G 200G 192 168 199 202 4C8G 200G 192 168 199 203 4C8
  • NOIP2020南开之役——退役之战

    文章目录 一 关于过程 1 考前准备 2 考时过程 2 考后搞心态 二 我的感想 谢谢 一 关于过程 1 考前准备 我认为 在这一方面 我已经尽力了 考前一周我是天天中午去机房刷题 总结 没有半点划水 并且每天晚自习我拼了命地做作业 总是第
  • pacemaker命令小记

    pacemaker一些命令及解释 crm help crm configure show 查看配置 crm mon version 查看版本 crm configure primitive ClusterIP ocf heartbeat I
  • client-go基础用法之增删改查deployment

    文章目录 1 创建clientSet 2 获取pod信息 3 获取deployment信息 4 更新deployment副本数量 5 更新deployment镜像 6 删除deployment 7 创建deployment和service
  • wget: unable to resolve host address解决方法

    利用wget下载东西时 比如输入指令wget www baidu com 提示报错 wget unable to resolve host address wget 无法解析主机地址 这就能看出是DNS解析的问题 解决办法 修改 etc r
  • springcloud gateway整合 sentinel nacos

    前言 Sentinel 分布式系统的流量防卫兵 是阿里中间件团队2018年7月开源的 面向分布式服务架构的轻量级流量控制产品 主要以流量为切入点 从流量控制 熔断降级 系统负载保护等多个维度来保护系统服务的稳定性 Sentinel 具有以下
  • unity通过ARFoundation开发苹果AR项目(三)

    unity通过ARFoundation开发苹果AR项目 三 接着上篇继续讲 上一讲中我们说到了将AR Session Original下的AR Camera设置为main camera 然后我们进行正式的项目开发 实现功能 实现对空间的寻找
  • window 如何查看是否安装mvn_如何在windows配置maven环境变量 看完你就知道了

    最近看到好多人maven环境变量配置不成功 如何正确的进行maven安装 如何正确进行maven环境变量配置 今天我详细的介绍如何配置maven环境变量 工具 材料 windows7 apache maven 3 2 2 bin zip 操
  • 计算机联锁怎么排进路,计算机联锁进路选排设计

    课程名称 计算机联锁 设计题目 计算机联锁进路选排设计 院系 计算机与通信工程系 学号 姓名 指导教师 西南交通大学峨眉校区 2012 年5 月 20 日 课 程 设 计 任 务书 专业姓名学号 开题日期 2012 年 03 月 26 日完
  • 基于卷积神经网络的mnist手写体识别

    基于卷积神经网络的mnist手写体识别 1 卷积神经网络 1 1 什么是卷积神经网络 首先 卷积神经网络的概念 百度是这么给出解释的 卷积神经网络 Convolutional Neural Networks CNN 是一类包含卷积计算且具有