《动手学深度学习 Pytorch版》 6.3 填充和步幅

2023-11-19

6.3.1 填充

虽然我们用的卷积核较小,每次只会丢失几像素,但是如果应用多层连续的卷积层,累积的像素丢失就会很多。解决此问题的方法为填充。

填充后的输出形状将为 ( n h − k h + p h + 1 ) × ( n w − k w + p w + 1 ) (n_h-k_h+p_h+1)\times(n_w-k_w+p_w+1) (nhkh+ph+1)×(nwkw+pw+1)

import torch
from torch import nn

def comp_conv2d(conv2d, X):
    X = X.reshape((1, 1) + X.shape)  # 批量大小和通道数都是1(此处为元组拼接)
    Y = conv2d(X)
    return Y.reshape(Y.shape[2:])  # 再忽略前两个维度

conv2d = nn.Conv2d(1, 1, kernel_size=3, padding=1)
X = torch.rand(size=(8, 8))
comp_conv2d(conv2d, X).shape  # 如果无填充则是 (6,6)
torch.Size([8, 8])
conv2d = nn.Conv2d(1, 1, kernel_size=(5, 3), padding=(2, 1))  # 也可以填充不同的高度和宽度
comp_conv2d(conv2d, X).shape  # 若不填充则为 (4, 6)
torch.Size([8, 8])

6.3.2 步幅

conv2d = nn.Conv2d(1, 1, kernel_size=3, padding=1, stride=2)  # 步幅为2则宽度高度减半
comp_conv2d(conv2d, X).shape
torch.Size([4, 4])

引入步幅后输出的形状应为 ⌊ ( n h − k h + p h + s h ) / s h ⌋ × ⌊ ( n w − k w + p w + s w ) / s w ⌋ \left\lfloor(n_h-k_h+p_h+s_h)/s_h\right\rfloor\times\left\lfloor(n_w-k_w+p_w+s_w)/s_w\right\rfloor (nhkh+ph+sh)/sh×(nwkw+pw+sw)/sw

conv2d = nn.Conv2d(1, 1, kernel_size=(3, 5), padding=(0, 1), stride=(3, 4))  # 实际实践中很少使用不一致的步幅或填充
comp_conv2d(conv2d, X).shape
torch.Size([2, 2])

练习

(1)对于本节中的最后一个示例,计算其输出形状,以查看它是否于实验结果一致。

( 高度 × 宽度 ) = ⌊ ( n h − k h + p h + s h ) / s h ⌋ × ⌊ ( n w − k w + p w + s w ) / s w ⌋ = ⌊ ( 8 − 3 + 0 + 3 ) / 3 ⌋ × ⌊ ( 8 − 5 + 1 + 4 ) / 4 ⌋ = ⌊ 8 / 3 ⌋ × ⌊ 8 / 4 ⌋ = ( 2 × 2 ) \begin{align} \left(高度\times宽度\right)&=\left\lfloor(n_h-k_h+p_h+s_h)/s_h\right\rfloor\times\left\lfloor(n_w-k_w+p_w+s_w)/s_w\right\rfloor\\ &= \left\lfloor(8-3+0+3)/3\right\rfloor\times\left\lfloor(8-5+1+4)/4\right\rfloor\\ &= \left\lfloor8/3\right\rfloor\times\left\lfloor8/4\right\rfloor\\ &= (2\times2) \end{align} (高度×宽度)=(nhkh+ph+sh)/sh×(nwkw+pw+sw)/sw=(83+0+3)/3×(85+1+4)/4=8/3×8/4=(2×2)


(2)对本节中的实验中,试一试其他填充和步幅的组合。


(3)对于音频信号,步幅为2说明什么?

类似于计组里学的对信号进行采样。


(4)步幅大于1的计算优势是什么?

减少计算量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《动手学深度学习 Pytorch版》 6.3 填充和步幅 的相关文章

随机推荐

  • 数据库/MySQL - 深入探究 - 1

    1 应用场景 主要用于了解和掌握数据库 MySQL 更新操作详细流程 2 学习 操作 1 文档阅读 主要来自于AI的对话 geek chat chatgpt 以及官方文档资料 以及其他技术文章 专栏等 2 整理输出 抛出问题 数据库 这里以
  • Jenkins部署

    链接 手把手教你用 Jenkins 自动部署 SpringBoot 江南一点雨 jekins 江南一点雨的博客 CSDN博客 bin bash jenkins要在后台执行脚本 需要在脚本前加上BUILD ID dontKillMe BUIL
  • Python while循环结构

    视频版教程 Python3零基础7天入门实战视频教程 循环语句可以在满足循环条件的情况下 反复执行某一段代码 这段被重复执行的代码被称为循环体 当反复执行这个循环体时 需要在合适的时候把循环条件改为假 从而结束循环 否则循环将一直执行下去
  • pycharm语句用法

    Python介绍 Python 是一个高层次的结合了解释性 编译性 互动性和面向对象的脚本语言 Python 的设计具有很强的可读性 相比其他语言经常使用英文关键字 其他语言的一些标点符号 它具有比其他语言更有特色语法结构 Python 是
  • 多种JS代码混淆加密,效果一览。

    演示代码如下 用JShaman对这段代码进行混淆加密 function demo alert hello www jshaman com demo 一 通用版 1 配置选项 压缩代码 保护效果 function demo alert hel
  • SQL数据库的连接、创建操作

    目录 1 数据库的连接 创建 2 对字段的操作 alter table 3 对数据的操作 插入 修改 删除 4 数据查询 select 5 多表查询 join on 6 约束操作 一 数据库的连接 创建 1 连接root数据库 cmd中输入
  • Python爬虫从入门到精通:(8)数据解析_xpath解析基础_Python涛哥

    xpath解析基础 环境安装 pip install lxml 解析原理 html标签是以树状的形式进行展示 实例化一个etree对象 且将待解析的页面源码数据加载到该对象中 调用etree对象的xpath方法结合着不同的xpath表达式实
  • 写了一个 SSO 单点登录的代码示例给胖友!

    发危 摘要 原创出处 http www iocoder cn Spring Security OAuth2 learning sso 芋道源码 欢迎转载 保留摘要 谢谢 1 概述 2 搭建统一登录系统 3 搭建 XXX 系统 666 彩蛋
  • js正则表达式多行匹配

    在js匹配网页内容时 往往需要匹配一段代码比如 div div 中间可能有很多行 这个时候一般 的匹配规则是匹配不出来的 如下介绍一个折中的方法 var content 这里是内容 var re p class s S p gt g var
  • win10微软应用商店不能用?简单两步完美解决

    想安装微软的软件 发现微软应用商店打不开 无论是我刷新还是重启 找了各种办法终于解决了 解决办法 1 打开键盘 田 R 键 输入 inetcpl cpl 2 然后去高级那里打开 勾上 使用TLS 1 2 选项 或者还原高级设置 3 最后打开
  • javaweb前后台交互传递数据的几种方法

    前端传后台 form表单传递
  • Django-ORM 单表查询

    目录 数据准备 查询关键字 1 QuerySet 对象 first方法 last方法 values方法 values list 方法 count exists 2 all 3 filter kwargs 4 get kwargs 不推荐使用
  • layui动态生成的手风琴实现默认第一个展开+鼠标悬浮展开

    嘿嘿嘿 我百度了一下 发现没有这个玩意 作为小白白的我自己摸索着成功实现了 今日好开心 耶耶耶 首先 我是从数据库提取数据 在前端用foreach循环展示 但是 循环出来的都是统一样式 要不都是展开 要不都是折叠 全部折叠 div clas
  • Database consistency

    consistency 这个词在不同的环境下有着不同的含义 各个方向都在使用 导致很难理解 多副本的一致性 即distirbuted 一致性hash CAP理论的一致性 ACID里的一致性 而这几个一致性的含义都不相同 结合各种资料 自己做
  • 回归测试策略

    什么是回归测试 开发人员把Bug修复好之后 测试人员需要重新验证Bug是否修复好了 同时在新版本中进行测试以检测开发人员在修复代码过程中是否引入新的Bug 此过程就称为回归测试 1 即使上一轮的Bug被修复了 在下一轮的测试中还可能发现新的
  • python 不省略打印tensor、numpy、panda,在终端中打印numpy数组时避免行的换行显示

    文章目录 1 python 不省略打印tensor numpy panda 1 1 tensor 1 2 numpy 1 3 panda 2 在终端中打印numpy数组时避免行的换行显示 1 python 不省略打印tensor numpy
  • 一文总结c++中的lambda

    基本构造 一般情况下 编译器可以自动推断出lambda表达式的返回类型 所以我们可以不指定返回类型 捕获 参数 函数体 捕获 可以捕捉lambda函数所在函数 的局部变量 值捕获 int c 1 auto show c cout lt
  • Unity制作适配全屏的Quad图形

    在Unity项目中 有时候需要呈现一直跟随摄像头移动的 能够全屏的一个quad长方形 quad加载纹理 就可以一直显示全屏了 把这个脚本绑定到Camera上 具体代码如下 using System Collections using Sys
  • 【论文笔记】基于Control Barrier Function的二次规划(QP)控制

    文章目录 写在前面 问题描述 RBF 1 Logarithmic 2 Inverse type 3 Reciprocal ZBF 两者的联系 CBF构建 RCBF ZCBF QP设计 ES CLF CLF CBF QP 写在前面 原论文 C
  • 《动手学深度学习 Pytorch版》 6.3 填充和步幅

    6 3 1 填充 虽然我们用的卷积核较小 每次只会丢失几像素 但是如果应用多层连续的卷积层 累积的像素丢失就会很多 解决此问题的方法为填充 填充后的输出形状将为 n h k h