CS2321n学习笔记——卷积和池化

CS2321n学习笔记——卷积和池化

卷积层和普通的全连接层面的最大差别就是,它可以保全空间结构

CS2321n学习笔记——卷积和池化_第1张图片
用之前提到的例子继续说明,假如输入的图片尺寸是32x32x3的,这里使用一个5x5x3的卷积核来进行运算,具体步骤是这个卷积核在这个图片结构上滑动,可以理解为5x5的滤波器在32x32的矩阵上滑动一样(在这副图上可以理解成蓝色的方体在粉色的方体内部游走滑动),后面的x3是RGB三个通道层,是数据的深度。
每次滑动后的运算都是点积,也就是将卷积核的每个数值和输入image空间位置上对应的像素值相乘然后对所有积求和,也就是说卷积运算有5x5x3=75次乘法运算。

CS2321n学习笔记——卷积和池化_第2张图片
而每次运算是将5x5x3=75个像素值经过卷积核的点积加在一起,全部滑动一遍之后整个32x32x3的图像变成了一个激活映射,图中右边蓝色和绿色的两个激活映射就是两个不同卷积核运算后的结果,这一层有几个卷积核就会得到几个这样的映射,也就是说每个卷积核得到一个激活映射。
CS2321n学习笔记——卷积和池化_第3张图片
如图,如果这一层有6个这样的卷积核,得到的输出就射6个激活映射,总的输出尺寸是28x28x6,再输入给下一层。

CS2321n学习笔记——卷积和池化_第4张图片
卷积层一层层叠加,每一层处理前一层的输出,卷积核的尺寸也做出相应变化,从而得到越来越高阶的特征。

那么每层卷积层传递给后一层的数据结构是什么呢?
CS2321n学习笔记——卷积和池化_第5张图片
输出尺寸与输入尺寸、卷积核尺寸还有步幅的运算关系如图,不同的步幅会导致不同的输出尺寸,但必须输出对称,也就是说在步幅的选择上必须除尽(如图中的stride3就不可取)

有时会做零填补(zero padding)来在输入图像周围加一圈像素,来保持输入的尺寸不变。CS2321n学习笔记——卷积和池化_第6张图片
如果神经网络有多个卷积层(有一定深度),不做边角填补的话,图像的尺寸会迅速减小,到后面就只剩很少的特征,所以零填补(或者其他形式的padding)是很有意义的。
CS2321n学习笔记——卷积和池化_第7张图片
这是一个例子:输入图像尺寸是32x32x3,用10个5x5的卷积核以步长1,填补2的模式运算,输出尺寸是多少呢?
CS2321n学习笔记——卷积和池化_第8张图片
结果是32x32x10
这一层的参数有:(5x5x3+1)x10=760个参数,其中x3是卷积核的深度,+1是每个卷积核的偏置项

而且,卷积核的尺寸也可以是1x1
CS2321n学习笔记——卷积和池化_第9张图片
这样的卷积核意义在于,对输入做深度方向上的卷积。

你可能感兴趣的:(CS231n)