卷积和池化都有如下几个参数:原始数据维度input_shape,卷积核大小kernel_size / 池化尺寸大小 pool_size,步长strides,填充padding=[‘same’, ‘valid’]。
padding为valid
如果padding为valid,那么不进行填充。在这种情况下,无论是卷积还是池化(池化将下面的kernel_size改为pool_size即可)的特征图的维度都是:
i
n
p
u
t
_
s
h
a
p
e
−
k
e
r
n
e
l
_
s
i
z
e
s
t
r
i
d
e
s
+
1
\frac{input\_shape - kernel\_size}{strides} + 1
stridesinput_shape−kernel_size+1
其中除法是向下取整的。
padding为same
如果padding为same,那么自然地卷积的输出维度就和输入维度相同了。但是对于池化而言并不一样。Tensorflow官方文档是如下图所写(实验证明它写的padding为valid和same的公式都是错的)。
pooling中的padding为“same”的作用如下,即进行填充使得如果步长为1时输出维度等于输入维度,那么这时可以计算一下填充了多少,然后用最下面的公式计算:
padding为设置的任意值
如果进行了填充,并且填充的大小为p,那么输出维度为:
i
n
p
u
t
_
s
h
a
p
e
−
k
e
r
n
e
l
_
s
i
z
e
+
2
p
s
t
r
i
d
e
s
+
1
\frac{input\_shape - kernel\_size + 2p}{strides} + 1
stridesinput_shape−kernel_size+2p+1