卷积神经网络的层次结构

卷积神经网络的层级结构

  • 数据输入层(Input Layer)
  • 卷积层(Convolutional Layer)
  • 激活层(Relu Layer)
  • 池化层(Pooling Layer)
  • 全连接层(FC Layer)

一、数据输入层

        数据输入层主要是对原始数据进行初步处理,使卷积神经网络能有更好的效果。处理方法有:

  • 灰度化:
            图片一般是通过一个三维矩阵存储的,矩阵的大小为(width,height,3),width是图像的宽度,height是图像的高度,3表示红(Red)、绿(Green)、蓝(Blue)三颜色通道。我们可以认为任何图片是通过不同程度的红色、绿色、蓝色叠加形成。那什么是灰度化呢?由于RGB不能反映图像的形状特征,只是从光学的原理上进行颜色的调配,而我们一般是需要提取图像的形状特征,所以可以将三通道的图片变成一通道,这个过程就是灰度化。

  • 常用的灰度化方法:
    1、分量法:将图像R、G、B三分量中的一种分量作为灰度图像的灰度值。
    2、最大值大:将图像R、G、B三分量中最大的分量作为灰度图像的灰度值
    3、加权平均法:将图像R、G、B三分量以不同的权重进行加权平均。人眼对绿色敏感最高,对蓝色敏感最低,故采用心理学灰度公式:Gray = 0.114B + 0.587G + 0.299R

  • 归一化:
            在神经网络中经常会使用sigmoid函数当做激活函数,sigmoid函数的函数值在[0, 1]之间,当输入{20,30,40,50,60}等远大于1的数据时,经过sigmoid函数的值将会非常的接近甚至是相等,这样就会无法起到应有的训练效果,将数据归一化就可以较好的解决这个问题。而且归一化可以使神经网络更快的收敛。

  • 常用的归一化方法:
    1、min-max标准化:
    也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 - 1]之间。转换函数如下:
    在这里插入图片描述
    其中max为样本数据的最大值,min为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

    2、Z-score标准化方法
             这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,转化函数为:
    在这里插入图片描述
    其中μ为所有样本数据的均值,σ为所有样本数据的标准差。

二、卷积层

        卷积层是卷积神经网络的核心,理解了卷积层也就理解了卷积神经网络。卷积是数学上的一种计算,而在神经网络中可以理解为一种可以提取图像特征的运算。在卷积层中有一些概念我们需要知道。

  • 1、卷积核
            我们可以把卷积核理解成一个过滤器,原图像经过卷积核的过滤后就可以得到这个图像的特征图谱。使用不同的卷积核就可以得到图像的不同特征,比如现在有一个识别时尚服饰图片并找出款式类似的项目,在这个项目里,主要是关心衣服的外形,而衣服的颜色、品牌之类的细节反而不重要了,所以需要使用卷积核过滤掉衣服的颜色等一些细节,只保留像外形特征这种有用的特征。这个可以通过索贝尔边缘检测滤波器来实现,结果如下:
    在这里插入图片描述
图1

图片来源网络[4]

        改滤波器将服饰的颜色等细节特征过滤掉,只保留了外形等有用特征。如果是找出颜色相同的服饰的话,那么就要使用另一个过滤器将外形等不重要的特征过滤掉,只保留颜色特征。

  • 2、卷积核的深度
            卷积核的深度就是卷积核的个数。每个卷积核之梦提取输入图像的部分特征,这在多数情况下,特征提取是不充分的,所以通过增加卷积核的个数,提取多个图像特征。

  • 3、卷积运算
            卷积核理解成权重矩阵的话,那么卷积运算就相当于加权求和的过程。
    在这里插入图片描述

图2

在这里插入图片描述

图3

        输出矩阵(黄色矩阵)中第一个元素就是红色矩阵与蓝色矩阵对应位置相乘并求和,即0 * 1 + 1 * 0 + 1 * -1 + 1 * 1 + 1 * 0 + 1 * -1 + 0 * 1 + 0 * 0 + 1 * -1 = -2 。下面的动图可以很好的帮助我们理解卷积运算的过程。
在这里插入图片描述

图4

该图来自网络([5])。

  • 4、步幅
            步幅(步长)就是卷积核滑动的长度,如上图,卷积核每次移动长度为1,即步幅为1。

  • 5、填充
            观察图4发现,5x5的矩阵经过卷积运算后变成3x3的矩阵了,为避免经过多次卷积后矩阵变得太小,可以再矩阵周围填充上一圈零来保证卷积后的矩阵跟原矩阵大小一样。如下图,用输入数据中用绿色填充的部分就是补零填充,再进卷积运算即可得到与原数据一样的大小的输出。
    在这里插入图片描述

图5

三、激活层

        上面所述的运算其实是一种线性的运算,而自然中很多的关系都是非线性的,因此,需要给上面的计算结果通过一个激活函数加一个非线性的关系。激活函数是参考了生物上神经元的机制,在生物意义上的神经元中,只有前面的树突传递的信号大于神经元的阈值时,下一个神经元才会被激活。与之类似,激活函数RELU当输入小于0时,输出为零,即失效;大于零输出则为本身。下面列出以下常见的激活函数:

  • RELU函数
    在这里插入图片描述
  • Sigmoid函数
    在这里插入图片描述
  • Tanh函数
    在这里插入图片描述

四、池化层

        池化层是对输入的数据进行压缩,提取主要特征的过程。一般池化分为最大池化和一般池化。以最大池化为例,池化的运算跟卷积有些相似,一般以一个2 * 2的矩阵对输入的数据进行扫描,取2 * 2区域的最大值。平均池化与最大池化类似,即2 * 2区域的取平均值。值得注意的是,池化层的输入数据一般是卷积层的输出(经过激活函数后)。
在这里插入图片描述

图6

五、全连接层

        全连接层实际上就是传统的神经网络(DNN),每一神经元与输出层的神经元通过权值相连,激活函数一般为softmax函数。当全连接层输入的数据是二维或三维矩阵矩阵时,应该拉伸成一维的列表运算。
在这里插入图片描述

图7

参考:
[1]图像灰度化的常用三种方式及其实现https://blog.csdn.net/qq_38401936/article/details/80459963
[2]图像归一化https://blog.csdn.net/u010555688/article/details/25551255
[3]数据归一化和两种常用的归一化方法https://www.iteye.com/blog/m635674608-2295848
[4]卷积神经网络(CNN)中的卷积核 概念 原理https://blog.csdn.net/lmb09122508/article/details/84949837
[5]深度学习基础概念笔记 (3)http://www.iot-online.com/jishuwenku/2017/0816/74532_3.html
[6]卷积神经网络(一):常见的激活函数以及其意义https://blog.csdn.net/fire_light_/article/details/79542602

  • 20
    点赞
  • 176
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值