卷积核的大小一般为奇数*奇数 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*1,3*3,5*5,7*7都是最常见的。这是为什么呢?为什么没有偶数*偶数?_池化

 池化操作

【卷积核的大小一般为奇数*奇数】 1*1,3*3,5*5,7*7都是最常见的。这是为什么呢?为什么没有偶数*偶数?_卷积核_02



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都是最常见的。这是为什么呢?为什么没有偶数*偶数?的主要内容,如果未能解决你的问题,请参考以下文章

卷积层里的填充Padding和步幅Stride 动手学深度学习v2 pytorch

深度学习深度学习基础知识

深度学习中网络设计的几点经验

卷积算子的大小和步长对张量维度的影响

剑指Offer-13:调整数组位置使奇数位于偶数前面

5457. 和为奇数的子数组数目。 前缀和