47 转置卷积 [动手学深度学习v2]

本文详细介绍了转置卷积的概念及其实现方式,包括如何通过重新排列输入和核来实现上采样,以及不同填充和步幅设置下的具体操作方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 转置卷积

    卷积不会增大输入的高宽,通常要么不变、要么减半;

    转置卷积则可以用来增大输入高宽。

    在这里插入图片描述

    Y [ i : i + h , j : j + w ] + = X [ i , j ] ⋅ K Y[i: i+h, j: j+w]+=X[i, j] \cdot K Y[i:i+h,j:j+w]+=X[i,j]K

  2. 如果卷积将输入从 ( h , w ) (h, w) (h,w)变成了 ( h ′ , w ′ ) (h', w') (h,w),同样超参数的转置卷积则从 ( h ′ , w ′ ) (h', w') (h,w)变成 ( h , w ) (h, w) (h,w)

  3. 代码实现

    import torch
    from torch import nn
    
    def trans_conv(X, K):
        h, w = K.shape
        Y = torch.zeros((X.shape[0] + h - 1, X.shape[1] + w - 1))
        for i in range(X.shape[0]):
            for j in range(X.shape[1]):
                Y[i:i + h, j:j + w] += X[i, j] * K
        return Y
    
  4. 转置卷积是一种卷积

    它将输入和核进行了重新排列;

    同卷积一般是做下采样不同,它通常用作上采样;

    如果卷积将输入从 ( h , w ) (h, w) (h,w)变成了 ( h ′ , w ′ ) (h', w') (h,w),同样超参数的转置卷积则从 ( h ′ , w ′ ) (h', w') (h,w)变成 ( h , w ) (h, w) (h,w)

  5. 重新排列输入和核

    • 当填充为0步幅为1时

      将输入填充 k − 1 k-1 k1 k k k是核窗口);

      将核矩阵上下、左右翻转;

      然后做正常卷积(填充0、步幅1)。

      在这里插入图片描述

    • 当填充为 p p p步幅为1时 [ p = 1 p=1 p=1]

      将输入填充 k − p − 1 k-p-1 kp1 k k k是核窗口);

      将核矩阵上下、左右翻转;

      然后做正常卷积(填充0、步幅1)。

      在这里插入图片描述

    • 当填充为 p p p步幅为 s s s时 [ p = 0 p=0 p=0, s = 1 s=1 s=1]

      在行和列之间插入 s − 1 s-1 s1行或列;

      将输入填充 k − p − 1 k-p-1 kp1 k k k是核窗口);

      将核矩阵上下、左右翻转;

      然后做正常卷积(填充0、步幅1)。

      在这里插入图片描述

  6. 形状换算:输入高(宽)为 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

    如果让高宽成倍增加,那么 k = 2 p + s k = 2p + s k=2p+s

  7. 数学上的反卷积(deconvolution)是指卷积的逆运算,很少用在深度学习中。我们说的反卷积神经网络指用了转置卷积的神经网络。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值