反卷积(转置卷积)
来源:互联网 发布:广东卫视网络电视回看 编辑:程序博客网 时间:2024/05/30 19:35
转置卷积其实就相当于正常卷积的反向传播。
考虑一个输入为x=4x4,卷积核为w=3x3,步长为stride=1,zero-padding=0
将卷积核展开为一个稀疏矩阵C:
做卷积可得2x2的输出y,C*x=y。如下图所示:
那么怎么得到转置卷积呢。正如我们上面说的转置卷积其实就相当于正常卷积的反向传播。
再对上式求输入x的梯度:
我们可以发现,在反向传播过程中梯度从高层传向底层,正好是来自高层的梯度左乘CT。所以我们要从2x2的输入y得到4x4的输出,只要:CT*y。
但是要注意的一点,转置卷积只是恢复了其形状,并未对其值进行恢复,这也是为什么将其称为反卷积不合适的原因了。
其实在tensorflo中实现转置卷积也是利用了这个性质。
另一种实现转置卷积操作的方法是对输入的feature map进行zero-padding,在进行正常的卷积操作就可以实现转置卷积:
但是这种操作相对于上面一种有一个缺点,对一个map进行转置卷积往往需要对其进行很多行和列的padding,所以效率相对较低。
最后需要注意的,转置卷积和信号处理中的反卷积是有差别,并不是卷积的反操作。
如果你不理解转置卷积,你可以这样去设置参数,比如,现在你需要从一个nxn的map转置卷积到一个mxm的map,你不知道怎么设置它的卷积核大小,padding和strides,这个时候你可以反过来考虑怎么从mxm正常卷积到nxn的map,两者的参数是一样的。你定义一个卷积核,决定其进行卷积操作还是转置卷积,只是看你是左乘C还是CT。
参考资料:A guide to convolution arithmetic for deep learning
https://www.zhihu.com/question/43609045?rf=53910187
- 反卷积(转置卷积)
- 反卷积(转置卷积)总结
- 反卷积层(转置卷积)
- 反卷积,转置卷积
- 卷积、反卷积、转置卷积和微步幅卷积
- 卷积神经网络CNN(1)——图像卷积与反卷积(后卷积,转置卷积)
- 卷积神经网络CNN(1)——图像卷积与反卷积(后卷积,转置卷积)
- CNN-卷积反卷积
- CNN-卷积反卷积
- 卷积与反卷积
- 卷积与反卷积
- 卷积与反卷积
- 卷积与反卷积
- 深度学习卷积网络中反卷积/转置卷积的理解 transposed conv/deconv
- 反卷积
- 反卷积
- 卷积与转置卷积
- 详解卷积反卷积操作
- 替换元素
- linux认识1
- 一个前端所需具备的PS能力
- LintCode 二叉树的所有路径
- Spark划分Shuffle依赖以及创建Stage的流程
- 反卷积(转置卷积)
- JS提交表单后回跳的细节处理
- LintCode 二叉树的后序遍历
- 微信接入错误
- Mac上解压.7z文件(已解决)
- 从零开始玩转logback
- 求π近似值
- JPA-7 整合Spring
- LintCode 二叉树的前序遍历