普通卷积、转置卷积(transposed convolution)的原理及运算步骤解释

1.首先声明一点,转置卷积不是卷积的逆运算,转置卷积也是一种卷积方式,作用是进行上采样!主要出现在分割和对抗神经网络模型中比较多。

2.其次,transposed convolution、fractionally-strided convolution 和 deconvolution都是指转置卷积,但是pytorch官方采用transposed convolution这种说法,也更能说明转置卷积的原理。下面是两种卷积的示意图:它们的具体参数为 stride=1;padding=0; kernel=3

                                                   

                             convolution                                     transposed convolution

2.操作步骤:

(1).在输入特征图元素之间填充stride-1 的行和列的0元素,stride为转置卷积的步长;

(2).在输入特征图的四周填充kernelsize-padding-1的行和列的0元素,kernelsize为转置卷积核的大小,padding为转置卷积的padding大小,这里padding和卷积的padding不一样,可以看到这里在进行转置卷积时特征图蓝色部分还是2*2,所以padding为0;

(3).将卷积核参数上下、左右翻转;

(4).做正常卷积运算(padding 0;stride 1)。

我说的实在浅薄,拾人牙慧也算不得,具体的例子,请参考这篇博文和视频博客:转置卷积的原理;B站:转置卷积的原理

3.Tips:另外,如果看完这两篇还是觉得云里雾里,没办法理解转置卷积的padding和stride到底是怎么会是的,建议参考github的这个项目来理解卷积;转置卷积动图,看完这个项目,我觉得转置卷积的padding和stride是和原始卷积保持一致的设置才能保证转置卷积后能还原到正常卷积之前的特征图大小,这两个参数对于转置卷积来说并不是体现在转置卷积的过程中,而是体现在转置卷积输入特征图元素间和四周的0元素设置上。举几个栗子给大家看看:

                           图1.原始的普通卷积:kernelsize=3;padding=0;stride=1

        图形解释: 普通卷积输出特征图大小的计算公式:输出尺寸 =( 输入特征图尺寸-卷积核尺寸+ 2倍的padding大小)/ stride大小 + 1 , 这里size = (4-3+2*0)/1 + 1= 2,  所以输出的特征图大小为2*2。

                        图2. 转置卷积:kernelsize=3;padding=0;stride=1

        图形解释:大家从上图可以看到,对于这个转置卷积来说,输入特征图周围是补了两行两列0的,那为什么这里padding=0,不是padding=2吗?这里就是转置卷积和普通卷积理解不一样的地方,有这个疑惑的朋友可以看看第3点我总结的,padding和stride参数的作用是用来对输入特征图进行处理的,而不是体现在卷积过程中的,尤其是步长这一参数,和普通卷积完全不同。接下来我来算一下,为什么会有4*4的特征矩阵输出:1.首先在输入特征图元素之间填充stride-1=0 行和列元素,即不填充;2.其次,在输入特征图四周填充kernel size-padding-1=2 行和列0元素,即填充两行两列0元素;3.将普通卷积核的参数上下、左右翻转;4.做正常的普通卷积操作(stride=1,padding=0)。

      转置卷积操作后特征图的大小可以通过如下公式计算:

      

      其中stride[0]表示高度方向的stride,padding[0]表示高度方向的padding,kernel_size[0]表示高度方向的kernel_size,索引[1]都表示宽度方向上的。通过上面公式可以看出padding越大,输出的特征矩阵高、宽越小,你可以理解为正向卷积过程中进行了padding然后得到了特征图,现在使用转置卷积还原到原来高、宽后要把之前的padding减掉。其实大部分情况下,高度和宽度上padding,kernel size还有stride都是相等的。
 

接下来,再看几个图,我想大家应该可以理解了:

                                图3.原始的普通卷积:kernelsize=3;padding=0;stride=2 

                                 图4. 转置卷积:kernelsize=3;padding=0;stride=2

                                 图5.原始的普通卷积:kernelsize=3;padding=1;stride=2

                                 图4. 转置卷积:kernelsize=3;padding=1;stride=2

好了,讲到这里,基本把转置卷积和普通卷积的简单流程和区别搞明白了,如果需要再深入学习的话,建议到我引用的链接中的大佬博客里面去学习! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/312839.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop分布式文件系统(三)

目录 一、Hadoop 1、MapReduce 1.1、理解MapReduce思想 1.2、分布式计算概念 1.3、MapReduce介绍 1.4、MapReduce特点 1.5、MapReduce局限性 1.6、MapReduce实例进程 1.7、MapReduce阶段组成 1.8、MapReduce数据类型 1.9、MapReduce官方示例 2、YARN 一、Hadoop 1…

leetcode 每日一题 2024年01月11日 统计出现过一次的公共字符串

题目 2085. 统计出现过一次的公共字符串 给你两个字符串数组 words1 和 words2 ,请你返回在两个字符串数组中 都恰好出现一次 的字符串的数目。 示例 1: 输入:words1 ["leetcode","is","amazing","a…

yolov8 瑞芯微 RKNN 的 C++部署,部署工程难度小、模型推理速度快

之前写过两次yolov8目标检测部署,后续继续思考,针对部署还有优化空间,本示例的部署方式优化了部署难度,加快了模型推理速度(略微增加了后处理的时耗)。 特别说明:如有侵权告知删除,…

支付宝异步验签踩的坑

最近公司要做支付宝小程序 我作为服务端就要给小程序配置下单啊,异步回调同步支付状态等功能 就不可避免的使用到了支付宝异步验签 首先背景是我是PHP语言,然后验签方式是RSA2 一开始写原生验签方法,验签失败,后面又搞sdk 验签…

ABAP message的6种类型

ABAP message的6种类型 代码示例, IF lt_bseg[] IS INITIAL. MESSAGE 测试的信息! TYPE I. ENDIF.

[BJDCTF2020]ZJCTF,不过如此

题目源码&#xff1a; <?phperror_reporting(0); $text $_GET["text"]; $file $_GET["file"]; if(isset($text)&&(file_get_contents($text,r)"I have a dream")){echo "<br><h1>".file_get_contents($tex…

完全卸载grafana

先停掉grafana sudo systemctl stop grafana-server 查看要卸载的包的名字 yum list installed yum remove grafana-enterprise.x86_64 成功 删除grafana的数据目录 sudo rm -rf /etc/grafana/sudo rm -rf /usr/share/grafana/sudo rm -rf /var/lib/grafana/

【AT 指令开发】软件框架与接口

目录 1 软件逻辑2.代码2.1 at_command.h2.2 at_command.c本文主要用于记录纯MCU无OS下,AT 指令开发软件框架 1 软件逻辑 2.代码 2.1 at_command.h #ifndef AT_COMMAND_H #define AT_COMMAND_Hvoid AT_CMD_Process(uint8_t *uartBuffer, uint8_t dataLen);/*描述AT指令返回值…

STM32学习笔记二十二:WS2812制作像素游戏屏-飞行射击游戏(12)总结

至此&#xff0c;飞行射击游戏已经基本实现该有的功能&#xff0c;已经比较接近早期的商业游戏了。 如果采用脚本&#xff0c;可以完成关卡游戏&#xff0c;如果不用&#xff0c;也可以做成无限挑战游戏。 我们汇总一下制作的过程&#xff1a; 1、建模UML 2、主循环处理过程…

基于JavaWeb+BS架构+SpringBoot+Vue电影订票系统系统的设计和实现

基于JavaWebBS架构SpringBootVue电影订票系统系统的设计和实现 文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 文末获取源码 Lun文目录 1 绪 论 3 1.1研究背景和意义 3 1.2拟解决的问题及特性 3 1.3论文的结构 …

数据库期末复习重点总结

数据库期末复习重点总结 本文为总结&#xff0c;如有不对的地方请指针 第2章 关系模型的介绍 名称符号选择σ投影∏笛卡儿积连接并∪集差-交∩赋值<-更名ρ 除操作 设R和S除运算的结果为T&#xff0c;则T包含所有在R中但不在S中的属性和值&#xff0c;且T的元组与S的元…

基于嵌入式的智能台灯系统

基于嵌入式的智能台灯系统 功能说明 通过微信小程序控制台灯的亮灭及亮度。采集温湿度传到微信小程序上&#xff0c;台灯可以显示实时北京时间。 功能展示 01智能台灯演示 Mqtt服务器 http://www.yoyolife.fun/iot&#xff1a;Mqtt服务器&#xff0c;我是在这里注册的&#x…

Java医院综合绩效考核系统源代码

医院绩效考核管理系统是采用B/S架构模式设计、使用JAVA语言开发、后台使用MySql数据库进行管理的一整套计算机应用软件。系统和his系统进行对接&#xff0c;按照设定周期&#xff0c;从his系统获取医院科室和医生、护士、其他人员工作量&#xff0c;对没有录入信息化系统的工作…

配网故障定位技术的发展与应用:保障电力供应安全稳定的重要支撑

在现代社会&#xff0c;电力供应安全稳定对于国家经济发展和民生福祉至关重要。然而&#xff0c;随着电网规模的不断扩大&#xff0c;配网故障问题也日益突出。为了确保电力供应的连续性和可靠性&#xff0c;人们不断探索和研发各种故障定位技术。本文将介绍一种基于行波测距技…

LLM大模型显存计算

一、目录 模型参数单位内存计算案例显卡算力推理显存计算训练显存计算huggface 官网计算 模型推理/训练 需要的显存大模型输入长度与显存的关系大模型推理 多线程与显存的关系 参考&#xff1a;https://blog.csdn.net/Johntill/article/details/132629075 二、实现 模型参数…

【详解】稀疏矩阵的十字链表✿◡‿◡

目录 引言&#xff1a; 稀疏矩阵的十字链表表示 第一步&#xff1a;创结点存数据 第二步&#xff1a;将头结点同数据结点串起来 第三步&#xff1a;创建一个总头结点构成循环链表 总代码如下&#xff1a; 运行结果如下&#xff1a; 结语&#xff1a; 引言&#xff1a; …

超简单的简历模板精选5篇

HR浏览一份简历也就25秒左右&#xff0c;如果你连「好简历」都没有&#xff0c;怎么能找到好工作呢&#xff1f; 如果你不懂得如何在简历上展示自己&#xff0c;或者觉得怎么改简历都不出彩&#xff0c;那请你一定仔细读完。 个人求职简历第 1 篇 男 22 本科 AI简历 市场营…

Open CV 图像处理基础:(五)Java 使用 Open CV 的绘图函数

Java 使用 Open CV 的绘图函数 使用 Open CV 在 Java 中对图片使用绘图函数&#xff0c;分别绘制矩形、斜线、圆形、椭圆形以及添加文本 Java 使用 Open CV 的绘图函数 Java 使用 Open CV 的绘图函数函数绘制矩形绘制线绘制圆形绘制椭圆添加文本 代码示例Open CV 专栏导航 函…

redis stream restTemplate消息监听队列框架搭建

整体思路 1. pom增加redis依赖&#xff1b; 2. 消息监听器&#xff0c;实现StreamListener接口&#xff0c;处理消息到达逻辑&#xff1b; 3. 将消息订阅bean及监听器注册到配置中&#xff1b; 1. pom <?xml version"1.0" encoding"UTF-8"?> <…

vue的mvvm模式

1.mvvm优点&#xff1a; 低耦合&#xff1a;视图&#xff08;View&#xff09;可以独立于Model变化和修改&#xff0c;一个ViewModel可以绑定到不同的View上&#xff0c;当View变化的时候Model可以不变&#xff0c;当Model变化的时候&#xff0c;View也可以不变。 可复用&…