反卷积(Transposed conv deconv)实现原理(通俗易懂)
什么是卷积
卷积就是把卷积核放在输入上进行滑窗,将当前卷积核覆盖范围内的输入与卷积核相乘,值进行累加,得到当前位置的输出,其本质在于融合多个像素值的信息输出一个像素值,本质上是下采样的,所以输出的大小必然小于输入的大小,如下图所示:
什么是反卷积
反卷积和转置卷积都是一个意思,所谓的反卷积,就是卷积的逆操作,我们将上图的卷积看成是输入通过卷积核的透视,那么反卷积就可以看成输出通过卷积核的透视,具体如下图所示:
比如左上角的图,将输出的55按照绿色的线的逆方向投影回去,可以得到[[55,110,55],[110,55,110],[55,55,110]]的结果;
我们将得到的四张特征图进行叠加(重合的地方其值相加),可以得到下图:
最终我们得到的特征图与卷积输入的特征图值的大小并不相同,说明卷积和反卷积并不是完全对等的可逆操作(因为采用相同的卷积核,卷积和反卷积得到的输入输出不同),也就是反卷积只能恢复尺寸,不能恢复数值
反卷积(deconv)为何能被称作转置卷积(Transposed conv)
因为反卷积就是将卷积操作中的卷积核矩阵进行了转置!!!!
下面详细来说:
我们知道,卷积在框架中的底层实现是通过矩阵相乘的方式,仍然以第一个卷积的例子来说:
我们将3X3的卷积核变换成4X16的矩阵,如下图所示:
为什么要将3X3的卷积核变换成4X16的矩阵呢?
原因:
1.在我们最开始讲到的卷积的例子当中,对于4X4的输入而言,卷积核一共要放置4次(移动四次),一次在原位置,一次横向移动一下,再纵向移动一下,再横向移动一下,把输入看成一维的向量的话,就有了以上的卷积核矩阵;
2.为什么要补0变成16维呢?因为是为了矩阵相乘,我们的输入是4X4,打成一维的就是1X16,当单个卷积核卷积的时候,另外7个值是没有参与计算的,所以要补7个0;
接下来,我们将4X4的输入变成16X1的矩阵,如下图所示:
然后矩阵相乘再进行reshape即可得到卷积的结果:
然后我们反卷积是如何实现的,如下图所示:
在反卷积中,将4X16的卷积核进行了转置,与1X4的输入相乘,四个中间过程可以代表矩阵相乘过程中的中间结果;
将中间结果reshape成4X4,再相加,可以得到与我们之前介绍反卷积推导相同的中间流程;
反卷积(Transposed conv deconv)实现原理(通俗易懂)相关推荐
- 深度学习 | 反卷积/转置卷积 的理解 transposed conv/deconv
原文:https://blog.csdn.net/u014722627/article/details/60574260 深度学习 | 反卷积/转置卷积 的理解 transposed conv/dec ...
- tensorflow一维卷积输入_深度学习中的反卷积(Transposed Convolution)
反卷积(Transposed Convolution)是一种图像上采样(UpSample)的方法,在DCGAN中用它来将随机采样的值转换为一张完整的图像. DCGAN生成手写数字.图片来源[5] Tr ...
- 深度学习卷积网络中反卷积/转置卷积的理解 transposed conv/deconv
搞明白了卷积网络中所谓deconv到底是个什么东西后,不写下来怕又忘记,根据参考资料,加上我自己的理解,记录在这篇博客里. 先来规范表达 为了方便理解,本文出现的举例情况都是2D矩阵卷积,卷积输入和核 ...
- Deconvolution 反卷积 Transposed Convolution 转置卷积 Fractionally Strided Convolution
看DCGAN时,看到了deconvolution,概念总混淆,记录一下 首先明确以下这几个概念: Transposed convolutional layers (also known as frac ...
- 反卷积(Transposed Convolution, Fractionally Strided Convolution or Deconvolution)
反卷积(Deconvolution)的概念第一次出现是Zeiler在2010年发表的论文Deconvolutional networks中,但是并没有指定反卷积这个名字,反卷积这个术语正式的使用是在其 ...
- 反卷积原理 + pytorch反卷积层参数output_padding
一般我们会认为2维卷积的计算分为了以下3类: 1.full 2.same 3. valid 参考:https://cn.mathworks.com/help/matlab/ref/conv2. ...
- 深度学习之卷积、全连接、反卷积等
全连接参考1:https://zhuanlan.zhihu.com/p/32819991 全连接参考2:代码实现 神经网络前后传输 CNN中卷积.池化的前向与反向传播: CNN卷积神经网络和反向传播( ...
- 机器学习19:反卷积算法
机器学习19:反卷积算法(转载和整理) 在整理全卷积网络的过程中,被反卷积的概念困扰很久,于是将反卷积算法单独整理为一篇博客,本文主要转载和整理自知乎问题如何通俗易懂地解释反卷积?中的高票答案. 1. ...
- Tensorflow反卷积(DeConv)实现原理+手写python代码实现反卷积(DeConv)
最近看到一个巨牛的人工智能教程,分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.平时碎片时间可以当小说看,[点这里可以去膜拜一下大神的" ...
最新文章
- OpenCV——膨胀与腐蚀
- 函数指针--Nginx和Redis中两种回调函数写法
- HDU2085:核反应堆(递推)
- java lr分析表建立程序_[源码和文档分享]基于Java实现的LR(1)分析法语法分析程序...
- python死机_请问下为什么我用PYTHON写编译器一旦用READ就死机
- 自定义http报头_浅谈http协议(三):HTTP 报文及其结构
- idea maven 删除dependencies_使用IDEA创建Maven工程 创建javase工程
- 数据库阻塞---讲解设计应用程序时避免阻塞的八个准则
- React 与 React-Native 使用同一个 meteor 后台
- 错误一例:expected expression before } token
- 已解决:如何彻底删除快压/以及彻底删除顽固的dll文件
- matlab绘制图形hold on_Matlab绘图示例
- 基于NNIE神经网络引擎_海思hi3516DV300方案硬件平台适合做哪些开发
- md 生成目录 码云_码云搭建博客
- selenium 复制粘贴
- 关于Dubbo的面试题,建议收藏
- 在 Word 中如何画底线、直线、虚线?
- oracle10g数据库复制,windows 下oracle 10G 数据库移植到 linux平台 (通过文件直接复制方法)...
- Alitum Designer 出现警告:[Warning] xxx.SchDoc Compiler Net xxx has no driving source
- 解决禅道升级报错:Column not found: 1054 Unknown column 'readme' in 'zt_im_client'
热门文章
- C语言中双感叹号的作用
- win10 1803 版本 麦克风问题 解决办法
- UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf3 in position 4645: invalid continuation byte
- 如何做MySQL的星型结构_MySQL Sakila示例数据库的星型模型
- 设计模式 -- 工厂模式
- 6500 RPR VS SSO
- OMRON欧姆龙 CP1H 使用以太网模块CP1W-CIF41,配置方法和异常排查
- 线性回归建模及模型诊断
- 图像梯度(opencv-c++)
- IOS angular ng-click ng-touch 手机延时问题,fastclick