keras的Conv2DTranspose与Conv2D输出大小

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/nima1994/article/details/83959495

在学习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

Conv2DTranspose输出计算

如上,逆运算可得

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

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

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

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

猜你喜欢

转载自blog.csdn.net/nima1994/article/details/83959495