卷积操作
对于输入图像尺寸为 N w ∗ N h N_w * N_h Nw∗Nh,图片通道数为C,那么 j假设卷积核尺寸为FxF,通道数也为C 步幅为S,Padding使用P,经过该卷积层后输出的图像尺寸为WxH:
图片宽度
W
=
⌊
N
w
+
2
P
−
F
S
+
1
⌋
W=\left \lfloor \frac{N_w+2P-F}{S} +1 \right \rfloor
W=⌊SNw+2P−F+1⌋
图片长度
H
=
⌊
N
h
+
2
P
−
F
S
+
1
⌋
H=\left \lfloor \frac{N_h+2P-F}{S} +1 \right \rfloor
H=⌊SNh+2P−F+1⌋
假设卷积核的个数为 T,那么之后输出图片大小为 W ∗ H W*H W∗H ,通道数为T
具体过程可以参考下面的吴恩达教授的关于卷积神经网络的教程
教程链接:https://mooc.study.163.com/course/2001281004#/info
最近碰到的总是TF中的参数问题,其中一个padding的参数值设置觉得比较重要。tf中padding提供两种填充方式:VALID和SAME。
对于VALID,就是不填充,进行卷积,再除以步长,输出的形状计算如下:
W
=
⌊
W
−
F
S
+
1
⌋
W=\left \lfloor \frac{W-F}{S} +1 \right \rfloor
W=⌊SW−F+1⌋
对于SAME,即卷积之后填充,仅仅除以步长,输出的形状计算如下:
W = ⌊ W S + 1 ⌋ W=\left \lfloor \frac{W}{S} +1 \right \rfloor W=⌊SW+1⌋
池化操作
对于输入图像尺寸为
W
∗
H
W * H
W∗H,图片通道数为C,那么 假设池化核尺寸为FxF,通道数也为C 步幅为S,Padding使用P,经过池化后输出的图像尺寸为WxH:
公式和池化操作一样
图片宽度
W
=
⌊
W
+
2
P
−
F
S
+
1
⌋
W=\left \lfloor \frac{W+2P-F}{S} +1 \right \rfloor
W=⌊SW+2P−F+1⌋
图片高度
H
=
⌊
H
+
2
P
−
F
S
+
1
⌋
H=\left \lfloor \frac{H+2P-F}{S} +1 \right \rfloor
H=⌊SH+2P−F+1⌋
即
但,一般来说,池化操作的步长等于池化核的尺寸,而且池化一般不进行填充,所以公式
图片宽度
W
=
⌊
W
−
F
F
+
1
⌋
W=\left \lfloor \frac{W-F}{F} +1 \right \rfloor
W=⌊FW−F+1⌋
图片高度
H
=
⌊
H
−
F
F
+
1
⌋
H=\left \lfloor \frac{H-F}{F} +1 \right \rfloor
H=⌊FH−F+1⌋
举例:
当进行池化操作时,步长S就等于池化核的尺寸,如输入为30x30,池化核为5x5,则输出为
30
−
5
5
+
1
=
6
\frac{30-5}{5}+1=6
530−5+1=6
当进行池化操作时,步长S就等于池化核的尺寸,如输入为30x30,池化核为7x7,则输出为
30
−
7
7
+
1
=
4.3
=
4
\frac{30-7}{7}+1=4.3=4
730−7+1=4.3=4
就是向下取整,取最小的整数,即为4.3,也是 取4