在学习FCN的过程中,用到了Conv2DTranspose,在此给出其计算公式。
Conv2D输出计算
对于Conv2D(此处不再考虑卷积核数,即参数filters,因为设为多少,输出就是多少),
输入图片矩阵为:WxW
卷积核大小,kernel_size:FxF
步长strides:S
边界扩充padding的值:P
则,输出大小N:
Conv2DTranspose输出计算
如上,逆运算可得
输入图片矩阵为:NxN
卷积核大小,kernel_size:FxF
步长strides:S
边界扩充padding的值:P
则,输出大小W:
举个栗子,原大小为 ,FCN5层池化后为 ,可以使用下式恢复原来大小:,即设卷积核大小和步长为32,padding为0 。
此部分的源码可以参考:..\Anaconda3\Lib\site-packages\keras\utils\conv_utils.py
。