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

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

 欢迎关注点赞收藏⭐️留言

本文由卿云阁原创!

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

首发时间:2021年6月5日

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

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

2022年 6月27日 天气小雨


目录

一、必备知识

 二. 神经网络

三、卷积神经网络的介绍

手写数字识别-基于卷积神经网络_第1张图片

一、必备知识

(1)手写数字

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

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

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

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

手写数字识别-基于卷积神经网络_第3张图片

一张图像数据有一个东西叫做颜色通道,比如常见的jpg格式的图像,就三颜色通道(RGB红色、绿色、蓝色)一张有颜色的图像由一个三维数组表示。

手写数字识别-基于卷积神经网络_第4张图片

 

(4)矩阵变换

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

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

数据集相当于

(60000, 784)的一个矩阵

手写数字识别-基于卷积神经网络_第5张图片

(5)归一化

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

 手写数字识别-基于卷积神经网络_第6张图片

(6)标签的表示

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

5

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

手写数字识别-基于卷积神经网络_第7张图片


 二. 神经网络

基本介绍

手写数字识别-基于卷积神经网络_第8张图片

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

得分函数

假设有四个像素点,每一个像素对应一个权重,因为各个点的影响程度不同。

手写数字识别-基于卷积神经网络_第9张图片

 手写数字识别-基于卷积神经网络_第10张图片

激活函数和损失函数(不同的任务需要不同的损失函数)
手写数字识别-基于卷积神经网络_第11张图片

手写数字识别-基于卷积神经网络_第12张图片

 

神经网络回顾(Neural Network)
手写数字识别-基于卷积神经网络_第13张图片

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

前向传播 Forward propagation 

手写数字识别-基于卷积神经网络_第14张图片

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

手写数字识别-基于卷积神经网络_第15张图片

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

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

损失函数图像

手写数字识别-基于卷积神经网络_第17张图片


三、卷积神经网络的介绍

网络结构手写数字识别-基于卷积神经网络_第18张图片

卷积神经网络识别图像

  1. 卷积层初步提取特征

  2. 池化层提取主要特征

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

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

通过CNN来区别两类。 

手写数字识别-基于卷积神经网络_第19张图片

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

手写数字识别-基于卷积神经网络_第20张图片

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

手写数字识别-基于卷积神经网络_第21张图片

 卷积的过程

手写数字识别-基于卷积神经网络_第22张图片

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

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

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

手写数字识别-基于卷积神经网络_第23张图片

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

 

手写数字识别-基于卷积神经网络_第24张图片

池化的过程手写数字识别-基于卷积神经网络_第25张图片

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

 

手写数字识别-基于卷积神经网络_第27张图片

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

 激活函数

手写数字识别-基于卷积神经网络_第29张图片

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

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

 

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

手写数字识别-基于卷积神经网络_第32张图片

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

手写数字识别-基于卷积神经网络_第33张图片

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

 手写数字识别-基于卷积神经网络_第34张图片

手写数字识别-基于卷积神经网络_第35张图片

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

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

手写数字识别-基于卷积神经网络_第36张图片 

 

你可能感兴趣的:(机器学习和深度学习,tensorflow,人工智能,python)