CNN-卷积核大小是奇数的原因
创始人
2024-03-31 15:38:39
0次

绝大多数卷积核的大小尺寸都是奇数,类似最常见的3×3、5×5等,那么为什么不会出现2×2或者4×4大小的卷积核呢?

一

卷积核的最大作用就是将输入的图像数据提取成特征的形式并输出,关键就是提取操作。我们假设输入的图像数据是n×nn\times nn×n的,且不是彩色图片,也就是它的通道数为1。设卷积核的大小为m×mm \times mm×m,这里我们可以看到,卷积核和输入都是方阵。设卷积核在输入数据上的移动步长sss,padding操作的大小为ppp,由此我们能得到经过卷积操作后输入的特征大小为qqq,qqq满足:
q=floor(n+2p−ms+1)q = floor(\frac{n+2p-m}{s}+1)q=floor(sn+2p−m​+1)
floor是向下取整函数,使用此公式我们可以计算输出矩阵的大小。

padding的中文意思是填充,这个操作是在卷积前的数据周围填充数据,从而改变卷积后的数据大小。一般情况下,这个操作可以分为三种,他们分别是same convolution、valid convolution、full convolution,他们在中文中分别叫:相同连接、有效连接和全连接,这个是deep learning中给出的。
valid convolution指的是不对卷积前的数据做padding操作,即给什么数据,卷积什么数据。这种操作不能无限卷积,因为每次卷积后的数据大小都会缩小。
same convolution是对卷积前的数据做padding操作,添加一些数据,使得添加后的数据经过卷积操作后大小和卷积前的数据大小相同。这种操作支持无限次数的卷积。
full convolution也是对卷积前的数据做padding操作,但是它添加数据的目的不是为了使得卷积前后数据大小相同,而是让原数据中每个像素点都能在每个方向上都能被访问k次,同时,输出的图像宽度为n+m-1。
通常最优的填充数量在same 和valid之间。

padding操作是在原数据的两端补充0元素,从而使得经过卷积后的数据规模不会变小。一般情况下步长sss取值都是1,而我们想要的卷积前的数据大小和卷积后的数据大小一样,那么就有:
n=n+2p−m+1p=2m−12n=n+2p-m+1\\ p = \frac{2m-1}{2}n=n+2p−m+1p=22m−1​
所以,要想在原数据的两端都补充数据,那么必须要让卷积核的大小mmm是一个奇数才行。只有mmm是奇数时,ppp才能是一个整数,这样才能在卷积前数据的两端都补充同样的数据。

二

第二个原因就是卷积核作为一个特殊的结构,当大小为奇数的时候,方便我们确定卷积核的位置,一般情况下,卷积核在源数据上的移动是以卷积核的中心点作为基准的,这个中心点非常重要。
其实这个解释感觉很牵强,因为当卷积核是偶数大小的时候,我们完全可以使用左上角或者右上角的数据作为基准来移动。至于为什么这个解释存在,个人认为应该是从实验中可以找到答案,卷积核大小为奇数的时候的学习效果会比卷积核大小为偶数的时候的学习效果好。

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...