CNN02:卷积计算层

0. 前言

前面对卷积神经网络的 层次结构以及一些相关的概念进行了总结,这一节主要关注卷及计算CONV Layer这一层。

1. 卷积计算层

假设输入的数据为一个RGB的图片,即这里有3个通道,如下图:
在这里插入图片描述
这里设置的卷积核(过滤器)设置为 5 ∗ 5 ∗ 3 5 * 5 * 3 553 ,这里的3对应的是原始图片中的3个通道;原始图片的3个通道可以看做是3个 32 ∗ 32 32*32 3232 的矩阵,所以会分别对应3个 5 ∗ 5 5*5 55 的矩阵,并且这里的3个过滤器就相当于是w
在这里插入图片描述
经过上面的卷积核的一次计算,最终得到下图结果,也就是原始图片经过卷积核,最终得到 28 ∗ 28 ∗ 1 28*28*1 28281 ;也许你会有如下疑问:

28如何求得?1表示什么?
① 28如何求得?
原始: 32 ∗ 32 ∗ 3 32*32*3 32323
卷积核(过滤器): 5 ∗ 5 ∗ 3 5*5*3 553

28 = 28 = 28= 32 + 2 ∗ p a d d i n g − 5 + 1 1 {32+2*padding-5+1}\over1 132+2padding5+1

上式的padding表示填充,即对原始的图片进行填充(防止无法整除的情况出现),1是步长;(此处需要注意的是,人为能够操作的元素是步长以及卷积核的设置,padding是底层控制的,如果不能整除,就会对其有设置,且是满足整除条件的最小的padding)

② 1表示什么?
这里的1可以认为经过卷积核输出的矩阵有几个,这里是1个 28 ∗ 28 28*28 2828 的矩阵,因为前面的 w 和 b 只设置了一组,也表示是一个深度,所以最终输出的是1个,即 28 ∗ 28 ∗ 1 28*28*1 28281
在这里插入图片描述
如果经过上述卷积核之后,输出结果如下图,又有何不同呢?
在这里插入图片描述
上图与前面的差别就是输出为 28 ∗ 28 ∗ 6 28*28*6 28286 ,也就是前面的 w 和 b 设置了6组,即深度为6,所以最终可以得到 28 ∗ 28 ∗ 6 28*28*6 28286,即有6个 28 ∗ 28 28*28 2828 的矩阵输出

以上面便是一次卷积的过程,但是需要注意如下的一些问题:

  1. 参数的设置
    对于步长的设置,即窗口滑动的步长,其大小必须小于等于卷积核的宽度;且一般不设置成等于,更多的时候是小于卷积核宽度的1/2,卷积核的宽度一般设置为奇数;这样设置的好处是,窗口滑动的过程中,对于图片信息的获取会有重叠的部分,所以会处理得更加平滑和自然;
  2. 这种滑动过程,也就是局部感知的过程CNN,会使得参数数目大大减小;比如上面的最后那张图片中,w 和 b 的数目一共是: ( 5 ∗ 5 ∗ 3 + 1 ) ∗ 6 (5*5*3+1)*6 (553+1)6,这里的 5 ∗ 5 ∗ 3 5*5*3 553 就是卷积核部分的w, 5 ∗ 5 5*5 55 是卷积核的大小, 3 3 3 是前面的原始图像有3个通道, 1 1 1是偏置即 b,后面乘6是因为深度为6,即有这样的6组w和b;若是全连接FC的话: 32 ∗ 32 ∗ 3 ∗ 28 ∗ 28 ∗ 6 32*32*3*28*28*6 3232328286
  3. 还有一点就是上述卷积的过程并不是非线性的,它实际上还是线性的变换,还是 w T ∗ X + b w^T*X+b wTX+b

猜你喜欢

转载自blog.csdn.net/weixin_41857483/article/details/111396798
今日推荐