卷积核的大小一般为奇数*奇数 1*1,3*3,5*5,7*7都是最常见的。这是为什么呢?为什么没有偶数*偶数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了卷积核的大小一般为奇数*奇数 1*1,3*3,5*5,7*7都是最常见的。这是为什么呢?为什么没有偶数*偶数?相关的知识,希望对你有一定的参考价值。
【卷积核的大小一般为奇数奇数】 11,33,55,77都是最常见的。这是为什么呢?为什么没有偶数偶数?
(1)更容易padding
在卷积时,我们有时候需要卷积前后的尺寸不变。这时候我们就需要用到padding。假设图像的大小,也就是被卷积对象的大小为nn,卷积核大小为kk,padding的幅度设为(k-1)/2时,卷积后的输出就为(n-k+2*((k-1)/2))/1+1=n,即卷积输出为n*n,保证了卷积前后尺寸不变。但是如果k是偶数的话,(k-1)/2就不是整数了。
(2)更容易找到卷积锚点
在CNN中,进行卷积操作时一般会以卷积核模块的一个位置为基准进行滑动,这个基准通常就是卷积核模块的中心。若卷积核为奇数,卷积锚点很好找,自然就是卷积模块中心,但如果卷积核是偶数,这时候就没有办法确定了,让谁是锚点似乎都不怎么好。
上述例子都只包含一个输入通道。实际上,大多数输入图像都有 RGB 3个通道。
图像卷积池化后的尺寸
卷积操作
池化操作
1、卷积层(Conv Layer)的输出张量(图像)的大小定义如下: O=输出图像的尺寸。 I=输入图像的尺寸。 K=卷积层的核尺寸 N=核数量 S=移动步长 P =填充数 输出图像尺寸的计算公式如下: 在这里插入图片描述
上述公式的 分式部分 向下取整
公式推导:画出图片,将卷积核顶在图片的最左上角,从卷积核的右边缘开始考虑。
卷积核的右边缘位于第K个位置,还剩下L-K+2*P个位置可以去移动,一次向右移动S步。
所以,卷积核还能移动(I-K+2P)\\S (向下取整)步。再加上本身就处在的位置,所以总共是(I-K+2P)\\S(下取整)+1
如果需要保持原来的尺寸:通常S = 1,K = 2P+1, 如padding为0, kernel为1,padding为1,kernel为3
如果需要尺寸减小为原来的一半(DCGAN实现的discriminator有):通常S = 2,K = 2P+2, 如padding为0kenerl为2,padding为1,kernel为4
2、池化层(MaxPool Layer)的输出张量(图像)的大小定义如下: O=输出图像的尺寸。 I=输入图像的尺寸。 S=移动步长 PS=池化层尺寸 输出图像尺寸的计算公式如下: 在这里插入图片描述
有了上述公式以后,我特地跑到b站看了相关视频,套入公式后,发现和我们的理解一样。
公式推导:和上面卷积层的推导十分相似,把pooling移动类比kernel移动即能明白。
如果需要尺寸减小为原来的一半: stride = 2, kernel = 2, 也即是maxpool的默认参数
以上是关于卷积核的大小一般为奇数*奇数 1*1,3*3,5*5,7*7都是最常见的。这是为什么呢?为什么没有偶数*偶数?的主要内容,如果未能解决你的问题,请参考以下文章