卷积神经网络必须知道的几个概念

1. 卷积(convolution):用它来进行特征提取

Convolution schematic.gif

用一个 3x3 的滤波器去扫描一个 5x5 的像素矩阵,用滤波器中每一个元素与像素矩阵中感受野内的元素进行乘积运算,可得到了一个 3x3 的输出像素矩阵,这个输出的 3x3 像素矩阵能够较大程度的提取原始像素矩阵的图像特征,这也是卷积神经网络之所以有效的原因。

以输出像素矩阵中第一个元素 4 为例,演示一下计算过程:1x1 + 1x0 + 1x1 + 0x0 +1x1 + 1x0 + 0x1 +0x0 + 1x1 = 4


输入图像是32*32*3,3是它的深度(即R、G、B),卷积层是一个5*5*3的filter(感受野),这里注意:感受野的深度必须和输入图像的深度相同。通过一个filter与输入图像的卷积可以得到一个28*28*1的特征图,上图是用了两个filter得到了两个特征图;

通常会使用多层卷积层来得到更深层次的特征图。如下:

关于卷积的过程图解如下:

输入图像和filter的对应位置元素相乘再求和,最后再加上b,得到特征图。如图中所示,filter w0的第一层深度和输入图像的蓝色方框中对应元素相乘再求和得到0,其他两个深度得到2,0,则有0+2+0+1=3即图中右边特征图的第一个元素3.,卷积过后输入图像的蓝色方框再滑动,stride=2,如下:

如上图,完成卷积,得到一个3*3*1的特征图;在这里还要注意一点,即zero pad项,即为图像加上一个边界,边界元素均为0.(对原输入无影响)一般有

F=3 => zero pad with 1

F=5 => zero pad with 2

F=7=> zero pad with 3,边界宽度是一个经验值,加上zero pad这一项是为了使输入图像和卷积后的特征图具有相同的维度,

如:输入为5*5*3,filter为3*3*3,在zero pad 为1,则加上zero pad后的输入图像为7*7*3,则卷积后的特征图大小为5*5*1((7-3)/1+1),与输入图像一样;

而关于特征图的大小计算方法具体如下:(详细看此文https://blog.csdn.net/zuliang001/article/details/83986862

2. ReLU层

ReLu层就是使用ReLU函数对conv层的数据进行一次activation处理的层。小于0的输入被置为0,大于0的输入正常输出。

激活函数还有这些:

3. 池化(Pooling):使特征图变小+提取主要特征

池化作用于图像中不重合的区域(这与卷积操作不同),过程如下图。

比如上方左侧矩阵A是20*20的矩阵要进行大小为10*10的池化,那么左侧图中的红色就是10*10的大小,对应到右侧的矩阵,右侧每个元素的值,是左侧红色矩阵每个元素的值的和再除以红色矩阵的元素个数,也就是平均值形式的池化。 


池化层:对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征,如下:

池化操作一般有两种,一种是Avy Pooling,一种是max Pooling,如下:

同样地采用一个2*2的filter, max pooling在每一个区域中寻找最大值,这里的stride=2,最终在原特征图中提取主要特征得到右图。

(Avy pooling现在不怎么用了,方法是对每一个2*2的区域元素求和,再除以4,得到主要特征),而一般的filter取2*2,最大取3*3,stride取2,压缩为原来的1/4。

 

4. 全连接层(用FC来表示):完成分类任务

连接所有的特征,将输出值送给分类器(如softmax分类器)。将上层抽取出来的特征向量在里面做一个权重计算,输出各个类别的概率。

 全连接层需要把输入拉成一个列项向量,如下图所示

比如输入的feature map是2X2,那么就需要把这个feature map 拉成4X1的列向量,如果feature map 的channels是3,也就是输入是3X2X2,也就是相当于有了12个像素点,这时就需要把feature map 拉成12X1的列向量,再乘一个权重,这个权重要把12个像素点都包含进去,所以这个权重的矩阵形式应该是1X12,所以经过一个全连接层后的输出就是1X12X12X1=1X1,这时候需要看需要多少个1X1的神经元了,如果是3个的话,那么输出就是3X(1X12X12X1)=3X(1X1).这个3在权重矩阵中代表3行,即每一行与输入相乘,得到一个输出:
5. 总的一个结构大致如下:

CNN是很多层layer的组合。每一层都通过一个不同的函数将一种activation转化为另一种。通常使用三种layer:convolutional layer, pooling layer,和fully-connected layer。将这些layer堆积起来成为ConvNet architecture.

参考:https://blog.csdn.net/zxyhhjs2017/article/details/78605283

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值