ConvTranspose2d 的简单例子理解

news2024/10/6 4:00:55

文章目录

    • 参考
    • 基础概念
    • 简单例子: stride=2
        • step1
        • step2
        • step3

参考

  • 逆卷积的详细解释ConvTranspose2d(fractionally-strided convolutions)
  • nn.ConvTranspose2d的参数output_padding的作用

基础概念

逆卷积,也叫反卷积或者转置卷积,作用是对图像进行上采样。
参考链接中的文章对形状变化的公式做了较为详细的描述,这里简单使用一个例子来演示数据变换过程。

假如输入数据(也叫原始数据)形状为 H x W, H = W.
大概的流程可以描述为

  • 当stride >1, 对原始数据进行插值变换,也就是每相邻数据间插入 (s-1) 列/行数据,变换后数据形状为
    H n e w = W n e w = H + ( s − 1 ) ∗ ( H − 1 ) H_{new} = W_{new} = H + (s-1)*(H-1) Hnew=Wnew=H+(s1)(H1)
  • 对变换后的数据进行padding,
    p a d d i n g n e w = k e r n e l _ s i z e − p a d d i n g − 1 padding_{new} = kernel\_size - padding - 1 paddingnew=kernel_sizepadding1
    经过这一步之后,数据形状为
    H n e w + 2 ∗ p a d d i n g n e w H_{new} + 2* padding_{new} Hnew+2paddingnew
  • 在这两步变换后进行如下正常卷积运算
    kernel_size = kernel_size
    padding = 0
    stride = 1

简单例子: stride=2

h = w = 2
stride = 2
p = 0
kernel_size = 3

step1

原始数据:
在这里插入图片描述

step2

内部变换:
stride >1,
当卷积时设置的stride>1时,将对输入的特征图y进行插值操作(interpolation)。

即需要在输入的特征图y的每个相邻值之间插入(stride-1)行和列0,因为特征图中能够插入的相邻位置有(height-1)个位置,所以此时得到的特征图的大小由HoutHout(Hout即height) 变为新的 Hout_newHout_new,即[Hout + (stride-1) * (Hout-1)] * [Hout + (stride-1) * (Hout-1)]
在这里插入图片描述

step3

外部变换:
为了实现由HoutHout大小的y逆卷积得到HinHin大小的x,还需要设置padding_new的值为(kernel_size - padding - 1),这里的padding是卷积操作时设置的padding值

在这里插入图片描述
然后在这个变换好的图上进行 kernel_size=3, padding =0, stride =1 的正常卷积可以得到最终结果
按照卷积的变换公式计算得到

(w + 2p - kernel_size)/s +1 = (7 - 3) +1 = 5.

也就是得到 5x5 的数据。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

故障分析 | OceanBase 频繁更新数据后读性能下降的排查

本文摘要 本文分析并复现了 OceanBase 频繁更新数据后读性能下降现象的原因,并给出了性能改善建议。 背景 测试在做 OceanBase 纯读性能压测的时候,发现对数据做过更新操作后,读性能会有较为明显的下降。具体复现步骤如下。 复现方式 环…

部门新来一00后,给我卷崩溃了...

2022年已经结束结束了,最近内卷严重,各种跳槽裁员,相信很多小伙伴也在准备今年的金三银四的面试计划。 在此展示一套学习笔记 / 面试手册,年后跳槽的朋友可以好好刷一刷,还是挺有必要的,它几乎涵盖了所有的…

NFT数字藏品平台

在 NFT (非同质化代币)发行和交易中,数字藏品交易平台(以下简称“交易平台”)的运营模式和法律地位至关重要。本文对数字藏品交易平台的运营方式进行梳理,并对其中可能存在的法律风险进行分析。 2021年以来…

NFS服务器搭建(案例)

目录标题 第一个问题1.安装软件包2.进入配置文件进行定义,并创建对应的资源文件3.客户端进行挂载,并查看挂载信息,修改挂载权限4.客户端查看挂载的信息 第二个问题1.服务端配置文件进行定义,并创建对应资源文件2.客户端进行挂载3.…

电子邮件是最有效的营销方式吗?解析邮件营销的优势和劣势

互联网的快速发展,使得新媒体营销、短视频营销、微信营销等新型营销方式渗入到大家的生活中。很多人会认为邮件营销已经落后。但事实上,邮件营销仍然有着广泛的市场需求,特别是对于出海或者做跨境电商的企业来讲,邮件营销仍然发挥…

深度学习笔记(续)——数值稳定性、模型初始化与激活函数

深度学习笔记[续]——数值稳定性、模型初始化与激活函数 引言回顾:没有激活函数参与,输入输出分布的变化情况 Xavier \text{Xavier} Xavier方法 存在激活函数的情况假设激活函数是线性函数激活函数的底层逻辑 总结 引言 继续上一节介绍激活函数在神经网…

Google IO 2023推出Android Studio官方AI工具Studio Bot

Google推出Android Studio官方AI工具Studio Bot Studio Bot 简介 在2023 Google I/O大会上,Google 宣布在 Android Studio 中推出了一款名为 Studio Bot 的新 AI 功能,它将为开发者提供更高效、智能的开发体验。Studio Bot 是一个基于机器学习的助手&a…

想要快速进入车载测试?这份车载面试题集锦送给你,建议收藏!

1.道路测试流程 测试场地 1.测试场地有哪些? 对于一些要求不太高/简单的测试场景可以找一些封闭的场地,如断头路或者是城市所在地当地政府提供的诸如智能网联专用道路之类的测试道路,对于复杂或相对要求高一些的测试场景可以到专业的国家智…

【运维杂谈】如何将ios镜像挂载到Linux系统中?

本期我们实现将CentOS7.9系统镜像挂载到Linux系统当中,首先明确什么是挂载,我理解的挂载就是把系统镜像与Linux操作系统建立直接的联系,将镜像的顶级目录连接到Linux根目录下的某一目录中,就好比我们Windows系统插入一张光盘&…

C++学习记录——이십삼 哈希表

文章目录 1、unordered_map unordered_set2、哈希表1、闭散列2、开散列(拉链法/哈希桶)继续优化 3、封装unordered和迭代器 1、unordered_map unordered_set C11提供,功能和map、set完全类似,不过它们底层实现是红黑树&#xff0…

JDBC~

文章目录 JDBCJDBC API详解DriverManagerConnectionStatementResultSetPreparedStatementPreparedStatement原理 JDBC JDBC就是使用JAVA语言操作关系型数据库的一套API JDBC是java处理数据库的接口 JDBC API详解 DriverManager 驱动管理类: 注册驱动,获取数据库连接…

Cplex的数据类型结构及基本语法功能

本序列将会重开一门新的序列----数学求解器cplex,文章不做简单介绍,不灌水,直接给大家进行讲述如何上手实操,并有针对性的给出相应案例分析。 OPL编程 OPL是ILOG团队为运筹学专家量身定制的一种优化建模语言,语法相对简单&#x…

C++系列之入门基础知识

💗 💗 博客:小怡同学 💗 💗 个人简介:编程小萌新 💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞 命名空间 常见域的种类 常见的域的种类有:全局域,局部…

快速构建springboot项目

需求:浏览器发送 /hello 请求,服务器接受请求并处理,响应 Hello World 字符串分析 构建 Spring Boot 项目,事实上建立的就是一个 Maven 项目 1.创建maven 工程 在 IDEA上新建一个空的jar类型 的 maven 工程 2.修改pom.xml 1.在…

【Tkinter.Floodgauge】当程序需要长时间运行,可以用这个组件显示进度【文末附源码地址】

文章目录 效果展示源码解析导包Floodgauge组件界面初始化创建窗口修改数值运行 源码地址 效果展示 我在使用tkinter进行界面化操作的时候,会遇到运行很慢的程序,比如:爬虫下载视频、压缩解压文件,这些操作会很耗时间。 Floodgau…

力扣 ~ JavaScript ~ 35. 搜索插入位置

《跃动青春》好可爱的女孩子的友谊哇 35. 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: …

redis(12)

1)添加地理位置坐标:已经添加的数据,无法再添加 geoadd key 经度 纬度 变量名字 geoadd china:city 121.47 31.23 shanghai 2)获取指定地区的坐标值: geopos key member(变量名字) geopos china:city shnaghai 3)获取到两个坐标之间的距离,后面是可选参…

95后的自述,文科女吃上IT饭了,历经5个月学习成功上岸软件测试......

想不到我一个女文科生也能吃上IT饭,真的是太香了!!! 程序员的待遇怎么这么好!(请大家原谅我没有见过市面的感叹,对于我这种刚上岗的新手而言,能够在厦门这个全国工资房价比最低的地方…

景区手绘图的配准、切图及上传

目录 1 增加一个项目 2 基础配置 3 获取自动上传需要的3个参数 3.1 生成切片上传验证码 3.2 按F5刷新页面 3.3 查看验证码以及其他2个参数 4 配准 5 切图 6 到迅达平台看一下切图效果 7 软件免费下载 这个免费客户端专用于迅达平台,对手绘图背景进行配准&…

java 调用 python 方法

目录 1.JPython 1.1 JPython介绍 1.2 JPython实践 2.使用Runtime.getRuntime()执行python脚本文件,推荐使用 一个项目可能需要用到人工智能算法,在java后端中需要调用python算法,这篇文章就简单介绍一下其中的两种java调用python方法。 …