keras的Conv2DTranspose与Conv2D输出大小

在学习FCN的过程中,用到了Conv2DTranspose,在此给出其计算公式。

Conv2D输出计算

对于Conv2D(此处不再考虑卷积核数,即参数filters,因为设为多少,输出就是多少),

输入图片矩阵为:WxW
卷积核大小,kernel_size:FxF
步长strides:S
边界扩充padding的值:P

则,输出大小N: N = ( W − F + 2 P ) / S + 1 N=(W-F+2P)/S+1 N=(WF+2P)/S+1

Conv2DTranspose输出计算

如上,逆运算可得

输入图片矩阵为:NxN
卷积核大小,kernel_size:FxF
步长strides:S
边界扩充padding的值:P

则,输出大小W: W = ( N − 1 ) ∗ S − 2 P + F W=(N-1)*S-2P+F W=(N1)S2P+F

举个栗子,原大小为 X X X,FCN5层池化后为 X / 32 X/32 X/32,可以使用下式恢复原来大小: ( X / 32 − 1 ) ∗ 32 + 32 (X/32-1)*32+32 (X/321)32+32,即设卷积核大小和步长为32,padding为0 。

此部分的源码可以参考:..\Anaconda3\Lib\site-packages\keras\utils\conv_utils.py

你可能感兴趣的:(python与人工睿智,机器学习入门与放弃)