转置卷积

  • **卷积不会增大输入的高宽,通常要么不变、要么减半。>>padding 但是padding往往会带来一些无效信息
  • **转置卷积则可以用来增大输入高宽
Pasted image 20260524104521.png Y[i:i+h,j:j+w]+=X[i,j].K\begin{align} Y[i:i+h,j:j+w]+=X[i,j].K \end{align}

为什么称之为转置

  • 对于卷积Y=X∗WY=X*W
    • 可以对W构造一个V,使得卷积等价于Y′=VX′Y'=VX'
    • 这里Y′,X′Y',X'是Y,XY,X对应的向量版本

Q:为什么可以这样

  • 转置卷积则等价于Y′=VTX′Y'=V^{T}X'
  • 如果卷积将输入从(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是核窗口)
    • 将核矩阵上下、左右翻转
    • 然后做正常卷积(填充为0,步幅为1)
  • 填充为p步幅为1
    • 将输入填充k-p-1
    • 将核矩阵上下、左右反转
    • 然后做正常卷积(填充0,步幅1)
  • 填充为p步幅为s时
    • 在行和列之间插入s-1行或列
    • 将输入填充k-p-1(k是核窗口)
    • 将核矩阵上下左右翻转
    • 然后做正常卷积(填充0、步幅1)

形状换算

  • 输入高宽为n 核k 填充p 步幅s
  • 转置卷积:n′=sn+k−2p−sn'=sn+k-2p-s
    • 卷积:n′=[(n−k−2p+s)/s]−>n>=sn′+k−2p−sn'=[(n-k-2p+s)/s]->n>=sn'+k-2p-s
    • 如果让高宽成倍增加,那么k=2p+sk=2p+s

同反卷积的关系

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