1. 引言
卷积层和池化层通常会减少输入的空间维度高和宽,或者使高和宽保持不变,而反卷积层能增加卷积后产生的中间特征图的空间维度。本文讨论的反卷积与PyTorch中反卷积的计算一致,其中卷积核的顺序也与PyTorch中一致。
2. 反卷积的基本操作
假设数据
I
I
I为
[
0
1
2
3
]
\begin{bmatrix}0&1\\2&3\end{bmatrix}
[0213],反卷积核
K
K
K为
[
3
4
1
2
]
\begin{bmatrix}3&4\\1&2\end{bmatrix}
[3142],步长为1,填充为0,
I
I
I和
K
K
K的反卷积计算过程如下。
3. 填充
卷积的填充是为了增加特征图的尺寸,而反卷积的填充是为了减少特征的尺寸,结果是在没进行填充的反卷积结果上去掉上下左右padding行或列。
I
I
I和
K
K
K在步长为1,填充为1的情况下进行反卷积的结果如下。
4. 步长
I
I
I和
K
K
K在步长为3,填充为0时的反卷积计算过程如下。下图中第三列和第三行没有任何计算结果,默认填0。
5. 多通道
下图展示了步长为1,填充为0时的多通道输入和输出的反卷积计算过程。
假设输入数据的形状为
h
×
w
h\times w
h×w,步长为
[
s
h
,
s
w
]
[s_h, s_w]
[sh,sw],填充为
[
p
h
,
p
w
]
[p_h, p_w]
[ph,pw],反卷积核为
[
k
h
,
k
w
]
[k_h, k_w]
[kh,kw],反卷积后特征图的尺寸为
[
(
h
−
1
)
s
h
−
2
p
h
+
k
h
,
(
w
−
1
)
s
w
−
2
p
w
+
k
w
]
[(h-1)s_h-2p_h+k_h, (w-1)s_w-2p_w+k_w]
[(h−1)sh−2ph+kh,(w−1)sw−2pw+kw]。