深度学习笔记(三十)CNN的Padding及卷积步长Stride
文章目录一、直接卷积运算的缺点二、Padding三、两种卷积方式四、卷积步长Stride五、互相关(cross-correlation)和卷积(convolution)的技术说明一、直接卷积运算的缺点如果图像是n×nn\times nn×n,过滤器是f×ff \times ff×f,那么卷积运算的结果是(n−f+1)×(n−f+1)(n-f+1)\times (n-f+1)(n−f+1)×(n−f
一、直接卷积运算的缺点
如果图像是 n × n n\times n n×n,过滤器是 f × f f \times f f×f,那么卷积运算的结果是 ( n − f + 1 ) × ( n − f + 1 ) (n-f+1)\times (n-f+1) (n−f+1)×(n−f+1)
- 随着一次次卷积运算的进行,图像会越来越小,如果神经网络深度很大,图像可能变得特别特别小。
- 覆盖边缘和角落像素点的过滤器远远比中间像素点少,导致丢失图像边缘位置的信息。
二、Padding
在原图像的四周填充一层像素点(习惯填充0),使得
n
×
n
→
(
n
+
2
)
×
(
n
+
2
)
n\times n\to (n+2)\times (n+2)
n×n→(n+2)×(n+2),通过
3
×
3
3\times 3
3×3过滤器的卷积后得到
n
×
n
n\times n
n×n结果,故图像尺寸没有改变。
一般地,设填充数量为
p
p
p,在上面这个例子中,周围填充一层,所以
p
=
1.
p=1.
p=1.
最终卷积结果为:
(
n
+
2
p
−
f
+
1
)
×
(
n
+
2
p
−
f
+
1
)
(n+2p-f+1)\times(n+2p-f+1)
(n+2p−f+1)×(n+2p−f+1)
三、两种卷积方式
- Valid 卷积不填充
( n × n ) ∗ ( f × f ) → ( n − f + 1 ) ∗ ( n − f + 1 ) (n\times n) * (f\times f)\to (n-f+1) * (n-f+1) (n×n)∗(f×f)→(n−f+1)∗(n−f+1)
p = 0 p=0 p=0 - Same 卷积后保存大小不变
[ ( n + 2 p ) × ( n + 2 p ) ] ∗ ( f × f ) → ( n + 2 p − f + 1 ) × ( n + 2 p − f + 1 ) [(n+2p)\times(n+2p)]*(f\times f)\to (n+2p-f+1)\times (n+2p-f+1) [(n+2p)×(n+2p)]∗(f×f)→(n+2p−f+1)×(n+2p−f+1)
n + 2 p − f + 1 = n ⇒ p = ( f − 1 ) / 2 n+2p-f+1=n\Rightarrow p=(f-1)/2 n+2p−f+1=n⇒p=(f−1)/2
卷积神经网络中,过滤器的
f
f
f通常是奇数(odd)大小的,例如
3
×
3
,
5
×
5
3\times 3,5\times5
3×3,5×5。为什么会有这样一个结论呢?主要的原因如下:
- 如果 f f f是偶数,计算 p = ( f − 1 ) / 2 p=(f-1)/2 p=(f−1)/2不会是整数,所以需要非对称填充。
- 如果 f f f是奇数,过滤器存在一个中心像素点,便于指出过滤器的位置。
四、卷积步长Stride
在前面的基础上,设步长stride为
s
s
s,在上图的例子中
s
=
2
s=2
s=2
一般地,
[
(
n
+
2
p
)
×
(
n
+
2
p
)
]
∗
(
f
×
f
)
→
(
n
+
2
p
−
f
s
+
1
)
×
(
n
+
2
p
−
f
s
+
1
)
[(n+2p)\times(n+2p)]*(f\times f)\to (\frac{n+2p-f}{s}+1)\times (\frac{n+2p-f}{s}+1)
[(n+2p)×(n+2p)]∗(f×f)→(sn+2p−f+1)×(sn+2p−f+1)
如果除以步长
s
s
s那里不能取整怎么办?通常做法是【向下取整】,即:
⌊
n
+
2
p
−
f
s
+
1
⌋
×
⌊
n
+
2
p
−
f
s
+
1
⌋
\lfloor {\frac{n+2p-f}{s}+1} \rfloor \times \lfloor {\frac{n+2p-f}{s}+1} \rfloor
⌊sn+2p−f+1⌋×⌊sn+2p−f+1⌋
向下取整的意义很简单,如果过滤器移动时超出了图像范围,那就不要做这一步卷积操作。
五、互相关(cross-correlation)和卷积(convolution)的技术说明
说这个问题之前,先说明什么是卷积:
- 官方定义:通过两个函数f和g生成第三个函数的一种数学算子,表征函数f与g经过翻转和平移的重叠部分函数值乘积对重叠长度的积分。
- 卷:翻转
- 积:积分(离散则求和)
- 数学中,卷积的过程归纳为:翻转、移位、相乘、相加
- CNN中,卷积的过程归纳为:移位、相乘、相加
在数学教材中,卷积的定义有一些不同之处,过滤器需要先中心对称(翻转180°),再进行卷积运算。
前面学习的卷积操作实际上是互相关而不是卷积,有同学评论得很形象呀:“没有卷,只有积。”
但是!在深度学习的文献中,我们不需要翻转过滤器,图像和过滤器逐个元素相乘求和的过程称作卷积操作,不需要多纠结这个问题。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)