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

Conv2D输出计算

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

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

则,输出大小N:keras的Conv2DTranspose与Conv2D输出大小_ide

Conv2DTranspose输出计算

如上,逆运算可得

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

则,输出大小W:keras的Conv2DTranspose与Conv2D输出大小_卷积核_02

举个栗子,原大小为 keras的Conv2DTranspose与Conv2D输出大小_ide_03,FCN5层池化后为 keras的Conv2DTranspose与Conv2D输出大小_卷积核_04,可以使用下式恢复原来大小:keras的Conv2DTranspose与Conv2D输出大小_ide_05,即设卷积核大小和步长为32,padding为0 。

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