转置卷积 - 一种特殊的卷积操作

  • 卷积不会增大输入的高宽,通常要么不变、要么减半
  • 转置卷积则可以用来增大输入高宽

在这里插入图片描述

为什么称之为“转置”呢?

  • 对于卷积 Y = X ✭ W Y=X✭W Y=XW
    • 可以对 W W W构造一个 V V V,使得卷积等价于矩阵乘法 Y ′ = V X ′ Y'=VX' Y=VX
    • 这里 Y ′ , X ′ Y',X' Y,X Y , X Y,X Y,X对应的向量版本
  • 转置卷积则等价于 Y ′ = V T X ′ Y'=V^TX' Y=VTX
  • 如果卷积将输入从 ( h , w ) (h,w) (h,w)变成了 ( h ′ , w ′ ) (h',w') (h,w)
    • 同样超参数的转置卷积则从 ( h ′ , w ′ ) (h',w') (h,w)变成 ( h , w ) (h,w) (h,w)

转置卷积是一种卷积

  • 它将输入和核进行了重新排列
  • 同卷积一般是做下采用不同,它通常用作上采样
  • 如果卷积将输入从 ( h , w ) (h,w) (h,w)变成了 ( h ′ , w ′ ) (h',w') (h,w),同样超参数下它将 ( h ′ , w ′ ) (h',w') (h,w)变成了 ( h , w ) (h,w) (h,w)

重新排列输入和核

  • 当填充为0,步幅为1时
    • 将输入填充 k − 1 k-1 k1 k k k是核窗口)
    • 将核矩阵上下、左右翻转
    • 然后做正常卷积(填充0,步幅1)

在这里插入图片描述

  • 当填充为 p p p,步幅为1时

    • 将输入填充 k − p − 1 k-p-1 kp1 k k k是核窗口)
    • 将矩阵上下、左右翻转
    • 然后做正常卷积(填充0、步幅1)

在这里插入图片描述

正常卷积,输入加padding,输出结果会变大

转置卷积,输入加padding,输出结果会变小

  • 当填充为 p p p,步幅为 s s s

    • 在行与列之间插入 s − 1 s-1 s1行或列
    • 将输入填充 k − p − 1 k-p-1 kp1 k k k是核窗口)
    • 将核矩阵上下、左右翻转
    • 然后做正常卷积(填充0、步幅1)

在这里插入图片描述

形状换算:

  • 输入高(宽)为 n n n,核为 k k k,填充 p p p,步幅 s s s
  • 转置卷积: n ′ = s n + k − 2 p − s n'=sn+k-2p-s n=sn+k2ps
    • 卷积: n ′ = ⌊ ( n − k − s p + 2 ) / s ⌋ → n ≥ s n ′ + k − 2 p − s n'=\lfloor {(n-k-sp+2)/s}\rfloor\rightarrow n\geq sn'+k-2p-s n=(nksp+2)/snsn+k2ps
  • 如果让高宽成倍增加,那么 k = 2 p + s k=2p+s k=2p+s

同反卷积的关系

  • 数学上的反卷积(deconvolution)是指卷积的逆运算
    • 如果 Y = c o n v ( X , K ) Y=conv(X,K) Y=conv(X,K),那么 X = d e c o n v ( Y , K ) X=deconv(Y,K) X=deconv(Y,K)
  • 反卷积很少用在深度学习中
    • 我们说的反卷积神经网络指用了转置卷积的神经网络

总结:

  • 转置卷积是一种变化了输入和核的卷积,来得到上采样的目的
  • 不等同于数学上的反卷积操作
posted @ 2023-10-30 13:30  mango1698  阅读(23)  评论(0编辑  收藏  举报  来源