转置卷积学习笔记

转置卷积最全博客链接 (最下面)

这一份足够了!!!因为连我这个学渣都看懂了

deconv / transposed conv

转置卷积又叫反卷积、逆卷积。不过转置卷积是目前最为正规和主流的名称,因为这个名称更加贴切的描述了卷积的计算过程,而其他的名字容易造成误导。在主流的深度学习框架中,如TensorFlow,Pytorch,Keras中的函数名都是conv_transpose。

一开始困惑的地方:

  • 因为叫做转置卷积,但把卷积核转置(或者左右翻转上下翻转),卷积后输出还是越来越小(或不变,至少不会增大)

为什么人们很喜欢叫转置卷积为反卷积或逆卷积。首先举一个例子,将一个4x4的输入通过3x3的卷积核在进行普通卷积(无padding, stride=1),将得到一个2x2的输出。而转置卷积将一个2x2的输入通过同样3x3大小的卷积核将得到一个4x4的输出,看起来似乎是普通卷积的逆过程。就好像是加法的逆过程是减法,乘法的逆过程是除法一样,人们自然而然的认为这两个操作似乎是一个可逆的过程。但事实上两者并没有什么关系,操作的过程也不是可逆的。

普通的卷积操作大家应该都知道,kernel在输入上不断滑动,每次进行互相关运算即可。

但是实际在计算机中计算的时候,并不是像这样一个位置一个位置的进行滑动计算,这样效率太低。计算机会将卷积核转换成等效的矩阵,将输入转换为向量。通过输入向量和卷积核矩阵的相乘获得输出向量。输出的向量经过整形便可得到我们的二维输出特征。balabalabalabala…

其余内容先看第一个博客链接就行

我简单看了下示意图,发现问题并不简单:

  • 卷积
    在这里插入图片描述
  • 反卷积
    在这里插入图片描述
    So,转置不是指单纯的将卷积核 w 变为 wT

如果将卷积计算写成矩阵乘法(在程序中,为了提高卷积操作的效率,就可以这么干,比如tensorflow中就是这种实现),Y=cX(其中 Y表示将 Y拉成一维向量, X 同理),那么反卷积确实可以表示为 cT Y,而这样的矩阵乘法,恰恰等于 w 左右翻转再上下翻转后与补0的 Y 卷积的情况

参考的高质量博文:
1. https://blog.csdn.net/tsyccnh/article/details/87357447  (推荐先看这个,很详细)
2. https://www.zhihu.com/question/43609045?sort=created (用矩阵乘法实现卷积运算的详细推导)
3. https://zhuanlan.zhihu.com/p/48501100
4. https://blog.csdn.net/susansmile1014/article/details/77676259 (含卷积、转置卷积常用公式总结)
5. https://blog.csdn.net/silence2015/article/details/78649734
6. https://iksinc.online/tag/transposed-convolution/
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值