卷积神经网络(CNN)中的卷积和池化

一、简介
在这里分别介绍一下卷积层、池化层、填充这三个在卷积神经网络中非常基础且常用的技术,同时还会以tensorflow为例讲一下这几个函数参数的含义以及该怎么使用。

二、卷积神经网络(CNN)中的卷积和池化
卷积层介绍
卷积神经网络(convolutional neural network),从它的名称就可以看出,卷积是其中最为关键的部分。在前面讲解图像去噪和图像分割中提到了一些用于分割和去噪的算法,例如sobel算子、中值滤波,其实卷积的概念和这些有相同之处。
把输入图像看作是一个n维矩阵,然后拿一个mm维(m<n)的卷积核(或者称为滤波器),从图像的左上角开始沿着从左至右、从上之下进行"扫描",每当移动到一个窗口后和对应的窗口做卷积运算(严格的说是互相关运算),用直白的话来说就是对应元素相乘之后加和。移动过程中涉及一个重要的概念—步长(stride),它的意思就是"扫描"过程中每次移动几个像素,如果步长stride=1,那么从左至右、从上之下逐个像素的移动。
在这里插入图片描述
以上图二维卷积运算为例,输入图像为一个5
5的矩阵,卷积核为3*3,以步长stride=1进行卷积运算,在左上角这个窗口每个对应元素先相乘再加和,即:
在这里插入图片描述

以这种方式逐个窗口进行计算,就得到图中等号右边的输出结果。
tensorflow使用:
在tensorflow中关于卷积层的函数为:tensorflow.nn. conv2d(input, filter, strides, padding)
其中参数分别为:
• input:输入数据或者上一层网络输出的结果
• filter:卷积核,它的是一个14维的参数,例如filter=[5, 5, 3, 96],这4个数字的概念分别是卷积核高度、卷积核宽度、输入数据通道数、输出数据通道数
• strides:这是前面所讲的步伐,同卷积核一样,它也是一个1
4维的参数,例如strides=[1, 2, 2, 1],这4个数字分别是batch方向移动的步长、水平方向移动的步长、垂直方向移动的步长、通道方向移动的步长,由于在运算过程中是不跳过batch和通道的,所以通常情况下第1个和第4个数字都是1
• padding:是填充方式,主要有两种方式,SAME, VALID,后面会讲什么是填充
池化层介绍
池化层和卷积层一样,是CNN模型必不可少的一个部分,在很多卷积层后会紧跟一个池化层,而且在统计卷积神经网络时,池化层是不单独称为网络层的,它与卷积层、激活函数、正则化同时使用时共同称为1个卷积层。
池化层又成为下采样或者欠采样,它的主要功能是对于特征进行降维,压缩数据和参数量,避免过拟合,常用的池化方式有两种:
• 最大池化
• 平均池化
以最大池化为例介绍一下它是怎么实现的,
在这里插入图片描述
和卷积层类似,池化层也有窗口和步长的概念,其中步长在里面的作用也是完全相同的,就是窗口每次移动的像素个数,所以不再赘述。池化层的窗口概念和卷积层中是截然不同的,在卷积层中每移动到一个窗口,对应的卷积核和输入图像做卷积运算。而在池化层中,窗口每移动到一个位置,就选择出这个窗口中的最大值输出,如果是平均池化就输出这个窗口内的平均值。

三、总结
本篇文章中,我们分析了卷及神经网络的卷积和池化等相关内容,结合上期的”卷积神经网络各层分析”,至此卷积神经网络的层级部分我们就介绍完了,下面我们将对卷积神经网络卷积核部分进行介绍。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章