-
一般卷积计算输出计算,
,其中N为输入N×N图像的一边长、Pad为Padding填充数、kernal为卷积核(一般3×3)的单边数、stride为kernal的移动步长。
这里需要注意,M为向下取正,所以当(P=1, K=3, S=2)时,N=5与N=6计算得到M都为3
。
-
Dilated卷积输出计算,
,其中dilaterate就为空洞数、核间隔(
)。就是k放大后计算一般卷积输出。
-
Transpose卷积输出计算,
。
这里需要注意的是TransCONV操作一般会指定 output_shape,因为例如对(3,3,1)做反卷还原,它的原始输入既可能是(5,5, 1)也可能为(6, 6, 1)。
在一般编程框架中,Padding参数为(Full=2, SAME=1, valid=0),
注意发现当卷积核为偶数时,计算公式在程序里就不对了,因为程序里(tensorflow)SAME表示输入输出大小一致,所以这时可以将SAME=2看待。一般不会用偶数卷积核(4X4)
个人理解,欢迎指教,谢谢。
参考:CNN之间的计算,TensorFlow】tf.nn.conv2d_transpose是怎样实现反卷积的?,如何理解深度学习中的deconvolution networks?,如何理解空洞卷积(dilated convolution)?, tensorflow学习笔记(三十二):conv2d_transpose ("解卷积"),网易云课堂-卷积神经网络
这个网页可以点开来看下,做的挺好 https://distill.pub/2016/deconv-checkerboard/