卷积与池化过程维度尺寸变化与一些名词整理

  之前整理过全连接层的前向传播过程中一些权重参数的维度。这篇文章整理一下带有卷积与池化的神经网络。还是直接给一个例子,从例子出发把各个方面梳理一下。

  以AlexNet为例(如下图):

卷积与池化过程维度尺寸变化与一些名词整理_第1张图片

卷积

  卷积的作用在于提取特征。可以用不同的卷积核提取不同层次的特征

  一般用到卷积和池化的网络都是用于图像任务,我们的输入一般就是一个三通道图像,比如上图中输入图像的尺寸为227*227*3。

卷积与池化过程维度尺寸变化与一些名词整理_第2张图片

  在上图也就是第一步卷积中,对于输入尺寸为227*227*3的图像,虽然图中写了卷积核的尺寸是11*11吗?但具体来说,是11*11*3,因为输入图像有三个通道!卷积核深度要和输入图像的深度保持一致。同一个卷积核上的三个通道的并不相同,它们分别去和输入图像的三个通道进行卷积操作,因为得到的结果尺寸必然相同,将三个结果相加就得到了初步卷积的结果了。此外,每个卷积核还带有一个偏置b,因此最终得到的输出为output上各个值都+b,这就是这一步卷积的最终结果。

卷积与池化过程维度尺寸变化与一些名词整理_第3张图片

  如图,一个卷积核的三个通道分别于输入图像三个通道进行卷积,并将三个结果相加,再与偏置1相加,就可以得到这个三通道卷积核对应的深度为1的特征层了。

  除此之外,在卷积与池化过程维度尺寸变化与一些名词整理_第4张图片这一步卷积过程中,因为我们得到了96个特征层(图中写了55*55*96),所以可以推断在这一步当中使用了96个卷积核。结合上面卷积核的尺寸,也就是说,在这一步卷积过程中,总共使用了96个大小为11*11*3的卷积核。

再强调一下几个重要的点:

1.卷积核深度=输入图像深度。比如输入图像是3通道的,那么这个卷积核的深度也是3,但这只是1个卷积核。

2.卷积层输出的深度也就是feature map的个数=卷积核个数。一个卷积核(不管它是多深)只能得到一个深度为1的输出(计算方式上面讲了)。

Padding

卷积与池化过程维度尺寸变化与一些名词整理_第5张图片

  如图,在卷积之前,我们在输入特征图的周围添加值为0的点(白色虚线框框),就是最常见的Padding。

  Padding其实就是一种边缘填充,为了减轻“越往边界处的点被计算的次数越少”这个问题,在图像最外面加一圈0,就可以增加边界点被利用的次数。一定程度上弥补边界信息缺失的问题。并且因为添加的是0,所以算出来不会对结果产生影响。也叫做Zero-padding。

卷积结果的尺寸变化

  假设卷积前图像高H1,宽W1;

  Fh表示滤波器Filter的高,Fw表示滤波器Filter的宽;

  S为stride表示滑动窗口的步长;P为padding表示补了几圈0。

  卷积后特征图高H2,宽W2,则有如下公式:

卷积与池化过程维度尺寸变化与一些名词整理_第6张图片

  做个小补充:如果要让卷积后尺寸不变,我们另H1=H2,W1=W2  解方程很容易有结论:
  卷积核尺寸为3*3,padding=1,步长为1,卷积后尺寸不变

  卷积核尺寸为5*5,padding=2,步长为1,卷积后尺寸不变
  ……以此类推 

  比如对于下面找个卷积过程,我们来验证一下(这里没有进行padding,P=0):

卷积与池化过程维度尺寸变化与一些名词整理_第7张图片

  从图中可知H1=W1=227;步长s告知=4;滤波器宽高Fh=Fw=11;H2=W2=55(用来验证)。因此有:

  H2 = W2 =(227-11+2*0)/4 + 1 = 55 符合已知。

权值共享

    卷积过程中的“权值共享”是一个比较常见的概念。其实这个我们已经知道了,我们用一个卷积核去遍历游走输入图像,那么这个filter里的数就是权重,并且它是不会变的,因此图像中的每个地方都被同样的filter扫描,就是共享。

  举个例子,还是拿这一步卷积来说明:

卷积与池化过程维度尺寸变化与一些名词整理_第8张图片

  我们已经知道了在这一步过程当中共有96个大小为11*11*3的卷积核,每个卷积核又都还有一个偏置参数b。所以共需要96*11*11*3+96 = 34944个参数,这些参数权值共享,比全连接层要减少很多参数。(假如说这里我们用全连接层去做,w层共有227*227*3*55*55*96个参数,再加上55*55*96个偏置项,共44892355200个参数。)

可以发现,通过卷积(的权值共享),我们极大地减少了参数的个数

池化

卷积与池化过程维度尺寸变化与一些名词整理_第9张图片

   池化操作的目的在于降维,进一步缩小参数量。最常用的就是max pooling,保留最大的特征值。池化核也可以定义大小和步长,类似地,池化前后的尺寸变化公式也和卷积一样。

最后要通过全连接层得到最终结果

  卷积池化之后,要得到最终预测结果,中间还需要进行全连接层。全连接层无法连接“带形状”的输入,所以我们还是需要将其打平(转化成一个一维的向量),将其变成“一列神经元”去处理。

一些名词解释

  feature map 一般指的是卷积网络里面的卷积层的输出一层就是一个feature map

  Filter、kernel是一个意思,都是指卷积核。

  数一个神经网络有几层,带参数计算的才算一层。因此卷积层算一层。像激活函数以及池化并没有什么参数,所以不算层数。全连接层有参数,也算一层。

  这篇主要总结了一下卷积池化维度参数相关的细节吧,有的以前自己也是比较模糊,现在就清楚了。

你可能感兴趣的:(AI相关,cnn,深度学习,计算机视觉,神经网络,人工智能)