问题1 (正向计算)
输入图片大小为200×200,依次经过
一层卷积(kernel size 5×5,padding 1,stride 2),
pooling(kernel size 3×3,padding 0,stride 1),
又一层卷积(kernel size 3×3,padding 1,stride 1)之后,
输出特征图大小为
A、 95
B、 96
C、 97
D、 98
答案:C
解析:
输出特征图尺寸
=
⌊
n
+
2
p
−
f
s
⌋
+
1
输出特征图尺寸= \left\lfloor \frac{n + 2p - f}{s} \right\rfloor + 1
输出特征图尺寸=⌊sn+2p−f⌋+1
首先我们应该知道卷积或者池化后大小的计算公式,其中,padding指的是向外扩展的边缘大小,而stride则是步长,即每次移动的长度。
这样一来就容易多了,首先长宽一般大,所以我们只需要计算一个维度即可,这样,
经过第一次卷积后的大小为: (200-5+21)/2+1 为99.5,取99
经过第一次池化后的大小为: (99-3)/1+1 为97
经过第二次卷积后的大小为: (97-3+21)/1+1 为97
问题2(正向计算)
卷积神经网络的输入图像尺寸为28x28x3,卷积核大小为3x3x3,卷积核的个数为8,卷积步幅Stride=1,填充值padding=1,则输出的特征图尺寸为
A、28 宽、28 高、8 深
B、13 宽、13 高、8 深
C、28 宽、13 高、8 深
D、13 宽、28 高、8 深
答案:A
解析:
输出特征图尺寸
=
⌊
n
+
2
p
−
f
s
⌋
+
1
输出特征图尺寸= \left\lfloor \frac{n + 2p - f}{s} \right\rfloor + 1
输出特征图尺寸=⌊sn+2p−f⌋+1
其中N为输入图像的宽和高,F为卷积核的宽和高,P为填充值padding,S为卷积核滑动步长stride。
问题3(逆向计算)
在CNN网络中,图A经过核为3x3,步长为2的卷积层,ReLU激活函数层,BN层,以及一个步长为2,核为2*2的池化层后,再经过一个3*3的的卷积层,步长为1,此时的感受野是
A.10
B.11
C.12
D.13
答案:D
解析:
根据上面的公式进行变换,计算感受野的时候不用考虑 padding ,因此
p
=
0
p=0
p=0,得到公式:
n
o
u
t
=
n
i
n
−
f
s
+
1
n_{out} = \frac{n_{in}-f}{s}+1
nout=snin−f+1
根据 out = 1 进行逆推:
1
=
n
1
−
3
1
+
1
,
得
n
1
=
3
(
C
o
n
v
2
)
1=\frac{n_1-3}{1}+1, 得n_1 =3 \ \ \ \ \ \ (Conv2)
1=1n1−3+1,得n1=3 (Conv2)
3
=
n
2
−
2
2
+
1
,
得
n
2
=
6
(
M
a
x
P
o
o
l
)
3 = \frac{n_2 - 2}{2}+1,得n_2 = 6 \ \ \ \ \ \ (MaxPool)
3=2n2−2+1,得n2=6 (MaxPool)
6
=
n
3
−
3
2
+
1
,
得
n
3
=
13
(
C
o
n
v
1
)
6 = \frac{n_3 - 3}{2}+1,得n_3 = 13\ \ \ \ \ \ (Conv1)
6=2n3−3+1,得n3=13 (Conv1)
因此感受野为13