反卷积(Transposed conv deconv)实现原理(通俗易懂)

article/2025/9/19 23:34:34

什么是卷积

卷积就是把卷积核放在输入上进行滑窗,将当前卷积核覆盖范围内的输入与卷积核相乘,值进行累加,得到当前位置的输出,其本质在于融合多个像素值的信息输出一个像素值,本质上是下采样的,所以输出的大小必然小于输入的大小,如下图所示:
在这里插入图片描述
在这里插入图片描述

什么是反卷积

反卷积和转置卷积都是一个意思,所谓的反卷积,就是卷积的逆操作,我们将上图的卷积看成是输入通过卷积核的透视,那么反卷积就可以看成输出通过卷积核的透视,具体如下图所示:
在这里插入图片描述
比如左上角的图,将输出的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,再相加,可以得到与我们之前介绍反卷积推导相同的中间流程;
在这里插入图片描述

在这里插入图片描述


http://chatgpt.dhexx.cn/article/Trr9wICJ.shtml

相关文章

Mysql的基本使用——Mysql教案(一)

文章目录 Mysql的基本使用1. Mysql的安装2. Mysql基本操作数据库操作表操作SQL操作练习资源课堂练习 查询(SELECT)去重(distinct)别名(AS)限制查询数(limit)排序(ORDER BY)条件查询(WHERE)普通查询多条件的查询语句模糊查询BETWEEN AND 内连接查询(inner join)外连接查询(outer…

链表-双链表

双向链表应用实例 双向链表的操作分析和实现 使用带 head 头的双向链表实现 管理单向链表的缺点分析: 单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找。单向链表不能自我删除,需要靠辅助节点 ,而双向链表&…

八股文之mysql

1、MySQL性能优化解决思路 SQL优化 表结构优化 程序配置优化 架构设计优化 硬件和操作系统优化 SQL语句优化 索引失效情况 最左前缀匹配原则 索引下推 表结构优化 将字段很多的表分解成多个表 对于字段较多的表,如果有些字段的使用频率很低,可以将…

数据库-MySQL

1.数据库基础概念 1.查看数据库-SQLsever学习基础概念 2.MySQL数据类型 1.MySQL支持多种数据类型,大致可分为四类 1.数值类型2.日期和时间类型3.字符串(字符)类型4.二进制类型 1.数值类型 1.整数类型 1.TINYINT(小整型数&#xff…

【爆肝题解】❤️24❤️新手也能理解并学会的剑指offer题目❤️❤️剑指 Offer 24. 反转链表

本文章是❤️剑指 offer(第2版)❤️的内容,该专栏还有多篇优质内容在等待你观看,现在点击右上角点击这个————🚀订阅专栏🚀 🔆坚持刷算法 💎每天进步一点点 🚀冲冲冲冲…

mysql 表结构反转,【数据结构】单向链表的反转/倒置的一种实现方法

【背景】 单向链表由于其存储灵活,所有的元素位置是通过额外开辟的指针作为指向的,于是在复习过程中,不由得想象一下如何将链表进行反转。 参考网上的教程,大多是用改变指针的指向进行实现,当然也有利用递归栈的特殊性…

Mysql数据库面经

目录 1、SQL1.1 介绍一下数据库分页1.2 介绍一下SQL中的聚合函数1.3 表跟表是怎么关联的?1.4 说一说你对外连接的了解1.5 说一说数据库的左连接和右连接1.6 SQL中怎么将行转成列?1.7 谈谈你对SQL注入的理解如何解决SQL注入1.8 将一张表的部分数据更新到另…

MySQL进阶

一、索引 1.1 索引概述 MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据…

MySQL经典100问

目录 常规篇 1、说一下数据库的三大范式? 2、只查询一条数据,但是也执行非常慢,原因一般有哪些? 3、count(*)、count(0)、count(id)实现方式的区别? 4、误删数据怎么办? 5、drop、truncate 和 delet…

Mysql常见面试题

文章目录 1. SQL1.1 介绍一下数据库分页1.2 SQL中怎么将行转成列?1.3 谈谈你对SQL注入的理解1.4 WHERE和HAVING有什么区别? 2. 索引2.1 说一说你对MySQL索引的理解2.2 如何创建及保存MySQL的索引?2.3 如何判断数据库的索引有没有生效&#xf…

mysql 表结构反转_数据结构-单链表反转的三种方式

单链表是一种线性数据结构,由当前节点数据和指向下个节点的指针组成,因为是单向的,所以称为单链表 单链表的反转: 例如:1—>2—>3—>4 反转成:4—>3—>2—>1 首先定义一个链表的节点&…

mysql 双向链表_23张图!万字详解「链表」,从小白到大佬!

链表和数组是数据类型中两个重要又常用的基础数据类型。 数组是连续存储在内存中的数据结构,因此它的优势是可以通过下标迅速的找到元素的位置,而它的缺点则是在插入和删除元素时会导致大量元素的被迫移动,为了解决和平衡此问题于是就有了链表…

面试必备 | 不可不会的反转链表

反转链表这题真的是面试非常喜欢考的了,这题看起来简单,但是能用两种方法一遍 bug free 也是不容易的,面试的时候可以筛下来一大批人,无论是对 junior 还是 senior 面试都很爱考。 今天齐姐就带你梳理清楚思路,思路清楚…

C/C++基础题124.反转链表

Hello: Person person = new Person(); person.Name = “xueyubin”; person.WeChat = “18309212110”; person.HeaderPhoto=“戴眼镜、黑眼圈、格子衫、牛仔裤、双肩包”; person.Sex = “男”; String major[] = { ‘C’,“C++”, “Linux”,“MySQL” }; person.IWantSay(“…

MySQL跨库链表_MySQL InnoDB 中通用双向链表的实现

源码在Ut0lst.h中 注意:这里我将链表中的实际的串联的数据叫做数据类比如:lock_t、mem_block_t 链表作为一种的非常重要的数据结构,在任何地方都会用到,这里简单解释一下innodb双向链表的实现,让我们来看看innodb链表设…

链表常见面试题:反转链表

问题描述 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例1: 输入: head [1,2,3,4,5] 输出: [5,4,3,2,1] 示例2: 输入: head [1,2] 输出: [2,1] 一、问题分析 这道题常见的解法有两种:双指针迭代 和 递归。 方法一…

【链表】反转链表

反转链表 要求我们不分配额外的空间,使链表进行反转。 题目分析 链表的节点结构如下: class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) { this.val val; }ListNode(int val, ListNode next) { this.val val; this.next ne…

IntelliJ IDEA 2019.1破解

此破解针对只针对IntelliJ IDEA 2019.1,高于此版本本人测试无法破解。 进入官网 http://www.jetbrains.com/idea/ 选择download——Ultimate版本 上图2019.1.1版本无法适用本破解方案。选择 Previous versions(历史版本) 选择此版本下载 或直接点击此链接下载&…

IntelliJ IDEA 2018.3.3 破解过程[详细步骤](Mac OS)

个人博客:小景哥哥 声明 若资金允许,请点击https://www.jetbrains.com/idea/buy/购买正版,谢谢! idea安装及破解步骤: 1.首先进入https://www.jetbrains.com/官网进行下载。 本人下载版本版本信息: Ver…

IntelliJ IDEA 2018.1.5 安装和破解教程

1.首先下载IntelliJ IDEA,下载链接:http://www.jetbrains.com/idea/download/#sectionwindows;记得一定要选择UItimate版! 2.下载完成后进行安装。傻瓜式安装(都懂得)。 3.安装完成后进行破解。首先下载破…