当我们需要将4维空间映射到16维空间的时候,我们需要用到转置卷积 (Transposed convolution)。
1. No zero padding, unit strides, transposed
在4x4的输入上使用3x3的核(滤波器)进行转置卷积,其中使用单位步长,零填充 (即
i=4,k=3,s=1,p=0)(上图为输入,下图为输出)。这个过程相当于在2x2的输入上使用3x3的核(滤波器)进行卷积,其中使用单位步长, 2x2的边界填充 (即
i′=2,k′=k,s′=1,p′=2)(下图为输入,上图为输出)。
在这种情况下, 卷积输入输出的关系为:
o′=i′+(k−1)
2. Zero padding, unit strides, transposed
在5x5的输入使用4x4的核(滤波器)进行转置卷积,其中使用单位步长,2x2的边界填充(即
i=5x5,k=4,s=1,p=2)(上图为输入,下图为输出)。这个过程相当于在6x6的输入上使用4x4的核(滤波器)进行卷积,其中使用单位步长, 1x1的边界填充 (即
i′=6,k′=k,s′=1,p′=1)(下图为输入,上图为输出)。
在这种情况下, 卷积输入输出的关系为:
o′=i′+(k−1)−2p (where p=2)
3. Half (same) padding, transposed
在5x5的输入使用3x3的核(滤波器)进行转置卷积,其中使用单位步长,半填充(half padding, same padding )(即
i=5x5,k=3,s=1,p=1)(上图为输入,下图为输出)。这个过程相当于在6x6的输入上使用3x3的核(滤波器)进行卷积,其中使用单位步长, 1x1的边界填充 (即
i′=5,k′=k,s′=1,p′=1)(下图为在这种情况下, 卷积输入输出的关系为:
o′=i′
4. Full padding, transposed
在5x5的输入使用3x3的核(滤波器)进行转置卷积,其中使用单位步长,全填充(full padding)(即
i=5x5,k=3,s=1,p=2)(上图为输入,下图为输出)。这个过程相当于在7x7的输入上使用3x3的核(滤波器)进行卷积,其中使用单位步长, 1x1的边界填充 (即
i′=7,k′=k,s′=1,p′=0)(下图为在这种情况下, 卷积输入输出的关系为:
o′=i′−(k−1)
5. No zero padding, non-unit strides, transposed
在5x5的输入使用3x3的核(滤波器)进行转置卷积,其中使用2x2步长,零填充(即
i=5×5,k=3,s=2×2,p=0)(上图为输入,下图为输出)。这个过程相当于在2x2的输入(其中在俩个像素之间填充1个0像素)上使用3x3的核(滤波器)进行卷积,其中使用单位步长, 2x2的边界填充 (即
i′=2,i
′=3,k′=k,s′=1,p′=2)(下图为在这种情况下, 卷积输入输出的关系为:
o′=s×(i′−1)+k (注意这里为s)
6. Zero padding, non-unit strides, transposed
在5x5的输入使用3x3的核(滤波器)进行转置卷积,其中使用2x2步长,1x1的边界填充(即
i=5×5,k=3,s=2×2,p=1)(上图为输入,下图为输出)。这个过程相当于在3x3的输入(其中在俩个像素之间填充1个0像素)上使用3x3的核(滤波器)进行卷积,其中使用单位步长, 1x1的边界填充 (即
i′=3,i
′=5,k′=k,s′=1,p′=1)(下图为在这种情况下, 卷积输入输出的关系为:
o′=s×(i′−1)+k−2p (注意这里为s)
在6x6的输入使用3x3的核(滤波器)进行转置卷积,其中使用2x2步长,1x1的边界填充(即
i=5×6,k=3,s=2×2,p=1)(上图为输入,下图为输出)。这个过程相当于在2x2的输入(其中在俩个像素之间填充1个0像素)上使用3x3的核(滤波器)进行卷积,其中使用单位步长, 1x1的边界填充(其中额外的边界填充到下面和右面边界) (即
i′=3,i
′=5,a=1,k′=k,s′=1,p′=1)(下图为在这种情况下, 卷积输入输出的关系为:
o′=s×(i′−1)+a+k−2p (注意这里为s)
以上为转置卷积以及卷积之间的过程。
参考:https://arxiv.org/abs/1603.07285