CS231n笔记6--Convolution与Pooling

Posted LiemZuvon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CS231n笔记6--Convolution与Pooling相关的知识,希望对你有一定的参考价值。

Convolution与Pooling

卷积-Convolution

总于写到卷积层这一部分了,呼。为了给大家一个比较容易理解的解释,我这一部分会以例子的形式来讲解如何做卷积。
相信如果有读者有信号处理或者图像处理基础的都对卷积这个方法不陌生,下面举个例子,一步一步演示如何卷积。

如何卷积

首先给出要卷积的数据

这里我们随便给一个3*3*1的矩阵。注意矩阵的第三维度是1,不要认为这个第三维度没有意义,很快我将会讲这个第三维有什么用,之所以定为1只是方便我们下面演示。
那么数据如下:
147258369

设置卷积的参数

是的,卷积还有一些参数要设置,包括了padding和stride。padding主要是为了处理数据的边缘问题,如果设置了padding,一般都会在扩充数据的第一二维,填充数值为0;而stride则是卷积过程中过滤器移动的步伐。不理解不要急,很快就跟大家演示了。那我们不妨就设置padding=1,stride=2吧。
由于padding不为0,因此我们要卷积的数据就不再是3*3*1维的了,而是5*5*1维,如下所示:
0000001470025800369000000

根据数据,使用对应的过滤器

根据我们上面给的数据,过滤器的第三维度等于要卷积的数据的第三维度,而其他两维一般则是相等的奇数维度。由于第三维度是1,因此过滤器的第三维度也会是1,我们给定过滤器的空间展度为3,也就是第一二维等于3(注意这里第一二维跟数据并没要相等,这里只是碰巧,实际上你可以让他们等于1的),下面是随便给出的过滤器。
935839219
并且还给出这个过滤器的偏移Bias = -40(又是乱设的)

开始卷积

其实卷积的过程很简单,我们拿着我们的过滤器,从数据的左上角从右向左,从上到下扫描一遍就可以了。
比如一开始,我们先用过滤器瞄准数据的左上角,如下(瞄准的区域已加深)
0000001470025800369000000
此时这个区域和过滤器它们的维数应该是完全一样的!然后我们让过滤器和这个区域的每个数字相乘后求和,得到的结果应该是
0*9+0*8+0*2+0*3+1*3+2*1+0*5+4*9+5*9 -40 = 46
然后我们把它放到一个目标矩阵里去
[46]

然后将过滤器往右移stride格,由于我们设置的stride是2,所以现在瞄准的区域就变成了
000000147002580036900000CS231n笔记7-ConvNets Typical Architecture与VGGNet

CS231n笔记3--Gradient Descent与Backward Propagation

CS231n笔记4-Data Preprocessing, Weights Initialization与Batch Normalization

CS231n笔记2--Fully Connected Neural Network与Activation Function

CS231n笔记4-Data Preprocessing, Weights Initialization与Batch Normalization

CS231n 2017 学习笔记03——损失函数与参数优化 Loss Functions and Optimization