1. 经过卷积层后的输出大小:
O
=
(
I
−
K
+
2
P
)
/
S
+
1
O = (I-K+2P)/S +1
O=(I−K+2P)/S+1
其中, 输出大小为
O
×
O
O\times O
O×O, 输入大小为
I
×
I
I\times I
I×I, K表示卷积核大小(kernel_size), S表示步长(stride), P表示padding.
例: 卷积层的输入shape为[32, 3, 224, 224], 其中对应输入大小为
224
×
224
224\times 224
224×224, 如果卷积操作为Conv2d(3, 16, kernel_size=3, stride=1, padding=1)
, 则输出大小为:
O
=
(
I
−
K
+
2
P
)
/
S
+
1
=
(
224
−
3
+
2
×
1
)
/
1
+
1
=
224
O=(I-K+2P)/S +1 =(224-3+2\times 1)/1+1=224
O=(I−K+2P)/S+1=(224−3+2×1)/1+1=224, 此时,卷积层的输出shape为[32, 16, 224, 224].
2. 经过反卷积层后的输出大小:
O
=
(
I
−
1
)
×
S
−
2
×
P
+
K
O= (I-1)\times S-2\times P +K
O=(I−1)×S−2×P+K
其中,参数同上.
3. 经过池化层后的输出大小:
O
=
(
I
−
K
+
2
P
)
/
S
+
1
O = (I-K+2P)/S +1
O=(I−K+2P)/S+1
[注]: 卷积向下取整,池化向上取整.