学GAN,逆卷积过程中图片大小变化到底是怎么变的?和步长有关系吗?
先看卷积时的情况
padding = “VALID”输入和输出大小关系如下:
输出大小等于输入大小减去滤波器(卷积核)大小加上1,最后再除以步长(f为滤波器的大小,s是步长大小)
padding = “SAME”输入和输出大小关系如下:
即输出大小等于输入大小除以步长向上取整,s是步长大小;
== 那逆卷积就是这个过程的逆 ==
下面来举个栗子
对于输入大小为7x7,输入通道数为256的图片,我们要求输出大小仍然为7x7,进行如下逆卷积操作:
则逆卷积输出大小W*W为:
⌈W/1⌉=7,则W=7
那么strides=(2,2)呢?
⌈W/2⌉=7,则W‘=14(输出大小翻倍,变成14x14)
(输出图片的通道数是由自己任意指定的)
那网上还有流传这样的公式
Conv2DTranspose输出计算
输入图片矩阵为:NxN
卷积核大小,kernel_size:FxF
步长strides:S
边界扩充padding的值:P
则,输出大小W:
W
=
(
N
−
1
)
∗
S
−
2
P
+
F
W=(N−1)∗S−2P+F
W=(N−1)∗S−2P+F
为什么不用这个计算逆卷积之后图片的大小呢?
这个公式也是对的,这个需要知道padding 0的个数。一般我们利用向上求整公式计算最后图像大小,然后利用上述这个公式计算padding 0 的个数
结论
逆卷积输出图片大小:与输入图片大小和步长有关,计算公式如上文