码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 动手学深度学习_转置卷积


    卷积是一种下采样操作,可以减少输入图像的空间维度(高和宽)。

    转置卷积(transposed convolution),可以看作是卷积的逆,是一种上采样操作,增大特征图的空间维度(高和宽)。注意这里卷积的逆只针对图像大小,图像中的值发生改变。

    卷积

    一个最简单例子演示转置卷积如何工作:设步幅为 1 且没有填充。 假设我们有一个 n_{h} \times n_{w} 的输入张量和一个 k_{h} \times k_{w} 的卷积核。 以步幅为 1 滑动卷积核窗口,每行 n_{w} 次,每列 n_{h} 次,共产生 n_{h}n_{w} 个中间结果。 每个中间结果都是一个 (n_{h}+k_{h} -1) \times (n_{w}+k_{w} -1) 的张量,初始化为 0 。 为了计算每个中间张量,输入张量中的每个元素都要乘以卷积核,从而使所得的k_{h} \times k_{w} 张量替换中间张量的一部分。最后,所有中间结果相加以获得最终结果。

    逐步实现: 

    1. def trans_conv(X, K):
    2. h, w = K.shape
    3. Y = torch.zeros((X.shape[0] + h - 1, X.shape[1] + w - 1))
    4. for i in range(X.shape[0]):
    5. for j in range(X.shape[1]):
    6. Y[i: i + h, j: j + w] += X[i, j] * K
    7. return Y

     简单实现:

    nn.ConvTranspose2d(1, 1, kernel_size=2, bias=False)

    填充

    在转置卷积中也可以添加padding操作,但是这里的padding不是向以前的卷积中的可以放大输入。可以理解缩小输入。

    举例:转置卷积的 padding 设置为 1 时,转置卷积的输出中将删除第一和最后的行与列。

    正常的是 input -> padding -> conv -> output 。

    转置卷积就是 input -> deconv -> depadding -> output 。过程完全逆运行。

    步幅

    看懂前面简单的转置卷积,那步长也没什么难点。

    nn.ConvTranspose2d(1, 1, kernel_size=2, stride=2, bias=False)

    通道 

    通道更简单,使用方法完完全一致

    1. conv = nn.Conv2d(10, 20, kernel_size=5, padding=2, stride=3)
    2. tconv = nn.ConvTranspose2d(20, 10, kernel_size=5, padding=2, stride=3)

    总结:

    卷积的变换:n_{output} = \left \lfloor (n - k+2p+s)/s \right \rfloor

    转置卷积:n_{output}= sn+k-2p-s

    当 k = 2p + s 时,卷积是成倍减小,转置卷积是成倍增加(高和宽)

  • 相关阅读:
    JavaWeb-Javac编译原理
    亚马逊API接口解析,实现获得AMAZON商品详情
    MIPI CSI-2笔记(6) -- Low Level Protocol(D-PHY物理层包头ECC)
    牛客网:NC54 三数之和
    Linux之shell文本搜索工具grep
    组队竞赛(int溢出问题)
    基于阶梯碳交易的含P2G-CCS耦合和燃气掺氢的虚拟电厂优化调度matlab程序
    互联网内卷严重?你咋不看看其他行业呢?无非是三十晚上无月亮
    【视频】结构方程模型SEM分析心理学营销数据路径图可视化|数据分享
    贪吃蛇项目(简单)
  • 原文地址:https://blog.csdn.net/like_jmo/article/details/126235126
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号