概述
卷积核
假设原输入形状为
(
n
h
×
n
w
)
(n_h times n_w)
(nh×nw),卷积核 kernel
大小为
(
k
h
×
k
w
)
(k_h times k_w)
(kh×kw),则输出形状为
(
n
h
−
k
h
+
1
)
×
(
n
w
−
k
w
+
1
)
(n_h - k_h + 1) times (n_w - k_w + 1)
(nh−kh+1)×(nw−kw+1)
填充
填充 padding
是指在输入高和宽两侧填充元素(通常是 0
元素),如果在高的两侧一共填充 ph 行,在宽的两侧一共填充 pw 列,则输出形状为
(
n
h
−
k
h
+
p
h
+
1
)
×
(
n
w
−
k
w
+
p
w
+
1
)
(n_h - k_h + p_h + 1) times (n_w - k_w + p_w + 1)
(nh−kh+ph+1)×(nw−kw+pw+1)一般情况下会设置
p
h
=
k
h
−
1
p_h = k_h - 1
ph=kh−1 和
p
w
=
k
w
−
1
p_w = k_w - 1
pw=kw−1来输入和输出具有相同的高和宽。
假设这里 k h k_h kh 是奇数,我们会在高的两侧分别填充 p h 2 frac{p_h}{2} 2ph 行;如果 k h k_h kh 是偶数,在输入的顶端填充 ⌈ p h 2 ⌉ lceilfrac{p_h}{2}rceil ⌈2ph⌉ 行,在底端填充 ⌊ p h 2 ⌋ lfloorfrac{p_h}{2}rfloor ⌊2ph⌋。在宽的两侧同理。
步长
卷积核在输入中每次滑动的长度就是步长 stride
。
当高上步长为 s h s_h sh,宽上步长为 s w s_w sw 时,输出形状为 ⌊ ( n h − k h + p h + s h ) / s h ⌋ × ⌊ ( n w − k w + p w + s w ) / s w ⌋ lfloor (n_h - k_h + p_h + s_h) / s_hrfloor times lfloor(n_w - k_w + p_w + s_w) / s_w rfloor ⌊(nh−kh+ph+sh)/sh⌋×⌊(nw−kw+pw+sw)/sw⌋ 如果设置 p h = k h − 1 p_h = k_h - 1 ph=kh−1 和 p w = k w − 1 p_w = k_w - 1 pw=kw−1,那么输出形状将简化为 ⌊ ( n h + s h − 1 ) / s h ⌋ × ⌊ ( n w + s w − 1 ) / s w ⌋ lfloor (n_h + s_h - 1) / s_hrfloor times lfloor(n_w + s_w - 1) / s_w rfloor ⌊(nh+sh−1)/sh⌋×⌊(nw+sw−1)/sw⌋更进一步,如果输入的高和宽都能被各自的步长整除,那么输出形状为 ( n h / s h ) × ( n w / s w ) (n_h / s_h) times (n_w / s_w) (nh/sh)×(nw/sw)
转置卷积
如果步幅为 s ,填充为 s / 2 (假设 s / 2 是整数)且卷积核的高和宽为 2s ,转置卷积核会将输入的高和宽分别放大 s 倍。
最后
以上就是饱满月饼为你收集整理的二维卷积层参数对形状的影响卷积核填充步长转置卷积的全部内容,希望文章能够帮你解决二维卷积层参数对形状的影响卷积核填充步长转置卷积所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复