卷积
Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1)
H
n
e
w
=
⌊
H
o
l
d
+
2
×
p
a
d
d
i
n
g
−
d
i
l
a
t
i
o
n
×
(
k
e
r
n
e
l
_
s
i
z
e
−
1
)
−
1
s
t
r
i
d
e
+
1
⌋
=
⌊
H
o
l
d
+
2
×
0
−
1
×
(
k
e
r
n
e
l
_
s
i
z
e
−
1
)
−
1
1
+
1
⌋
\begin{aligned} {H_{new}}&=\left\lfloor \frac{\textcolor{blue}{H_{old}} +2\times padding-dilation\times ( kernel\_size-1) -1}{stride} +1 \right\rfloor \\ &=\left\lfloor \frac{\textcolor{blue}{H_{old}} +2\times \textcolor{red}{0}-\textcolor{red}{1}\times ( kernel\_size-1) -1}{\textcolor{red}{1}} +1 \right\rfloor \end{aligned}
Hnew=⌊strideHold+2×padding−dilation×(kernel_size−1)−1+1⌋=⌊1Hold+2×0−1×(kernel_size−1)−1+1⌋
红色表示
默认参数值
\textcolor{red}{默认参数值}
默认参数值
k
e
r
n
e
l
_
s
i
z
e
kernel\_size
kernel_size 没有默认参数值,属于调用卷积时必须人为指定。
⌊
x
⌋
\left\lfloor x \right\rfloor
⌊x⌋表示对
x
x
x进行向下取整
反卷积
ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, dilation=1)
H
n
e
w
=
(
H
o
l
d
−
1
)
×
s
t
r
i
d
e
−
2
×
p
a
d
d
i
n
g
+
d
i
l
a
t
i
o
n
×
(
k
e
r
n
e
l
_
s
i
z
e
−
1
)
+
o
u
t
p
u
t
_
p
a
d
d
i
n
g
+
1
=
(
H
o
l
d
−
1
)
×
1
−
2
×
0
+
1
×
(
k
e
r
n
e
l
_
s
i
z
e
−
1
)
+
0
+
1
\begin{aligned} {H_{new}}&=( \textcolor{blue}{H_{old}} -1) \times stride-2\times padding+dilation\times ( kernel\_size-1) +output\_padding+1 \\ &=( \textcolor{blue}{H_{old}} -1) \times \textcolor{red}{1}-2\times \textcolor{red}{0}+\textcolor{red}{1}\times ( kernel\_size-1) +\textcolor{red}{0}+1 \end{aligned}
Hnew=(Hold−1)×stride−2×padding+dilation×(kernel_size−1)+output_padding+1=(Hold−1)×1−2×0+1×(kernel_size−1)+0+1
average pooling
avg_pool2d(input, kernel_size, stride=None, padding=0)
H
n
e
w
=
⌊
H
o
l
d
+
2
×
p
a
d
d
i
n
g
−
k
e
r
n
e
l
_
s
i
z
e
s
t
r
i
d
e
+
1
⌋
=
⌊
H
o
l
d
+
2
×
0
−
k
e
r
n
e
l
_
s
i
z
e
k
e
r
n
e
l
_
s
i
z
e
+
1
⌋
\begin{aligned} H_{new} &=\left\lfloor \frac{\textcolor{blue}{H_{old}} +2\times padding-kernel\_size}{stride} +1\right\rfloor \\ &=\left\lfloor \frac{\textcolor{blue}{H_{old}} +2\times \textcolor{red}{0}-kernel\_size}{ \textcolor{red}{kernel\_size}} +1\right\rfloor \end{aligned}
Hnew=⌊strideHold+2×padding−kernel_size+1⌋=⌊kernel_sizeHold+2×0−kernel_size+1⌋
input
中包括张量的高
H
o
l
d
\textcolor{blue}{H_{old}}
Hold和宽
W
o
l
d
W_{old}
Wold(因为
W
n
e
w
W_{new}
Wnew的维度更新方式和
H
n
e
w
{H_{new}}
Hnew一样,所以本文中没有列出
W
n
e
w
W_{new}
Wnew的更新方式)
s
t
i
d
e
stide
stide的默认参数是人为指定的
k
e
r
n
e
_
s
i
z
e
\textcolor{red}{kerne\_size}
kerne_size值。
max pooling
MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)
H
n
e
w
=
⌊
H
o
l
d
+
2
×
p
a
d
d
i
n
g
−
d
i
l
a
t
i
o
n
×
(
k
e
r
n
e
l
_
s
i
z
e
−
1
)
−
1
s
t
r
i
d
e
+
1
⌋
=
⌊
H
o
l
d
+
2
×
0
−
1
×
(
k
e
r
n
e
l
_
s
i
z
e
−
1
)
−
1
k
e
r
n
e
l
_
s
i
z
e
+
1
⌋
\begin{aligned} H_{new} &=\left\lfloor \frac{\textcolor{blue}{H_{old}} +2\times padding-dilation\times ( kernel\_size-1) -1}{stride} +1\right\rfloor \\ &=\left\lfloor \frac{\textcolor{blue}{H_{old}} +2\times \textcolor{red}{0}-\textcolor{red}{1}\times ( kernel\_size-1) -1}{\textcolor{red}{kernel\_size}} +1\right\rfloor \end{aligned}
Hnew=⌊strideHold+2×padding−dilation×(kernel_size−1)−1+1⌋=⌊kernel_sizeHold+2×0−1×(kernel_size−1)−1+1⌋