李沐20_卷积层里的填充和步幅——自学笔记

填充和步幅

给定32✖32的输入图像,应用5✖5大小的卷积核(第一层输出28✖28,第7层输出大小是4✖4,即每一层都-4)

更大的卷积核可以更快地减小输出大小:形状从nk✖nk减少到(nh-kn+1)✖(nw-kw+1)

1.填充

在输入的周围添加额外的行/列,考虑了角落里的特征

(1) 填充ph行和ph列,输出形状是(nh-kh+ph+1)✖(nw-kw+pw+1)
(2) 通常取ph=kh-1, pw=kw-1,核的高宽-1,即-kh+ph+1和-kw+pw+1都消除为0
(3) 当kh为奇数:在上下两侧填充ph/2
(4) 当kh为偶数:在上侧填充ph/2,在下侧填充ph/2

2.步幅

填充减小的输出大小与层数线性相关。

给定输入大小224✖224,在使用5✖5卷积核的情况下,需要55层将输出降低为4✖4,即需要大量计算才能得到较小的输出。

步幅是指行/列的滑动步长。

(1)给定高度sh,宽度sw,输出形状:[(nh-kh+ph+sh)/sh]✖[(nw-kw+pw+sw)/sw]

(2)如果ph=kh-1, pw=kw-1,则[(nh+sh-1)/sh]✖[(nw+sw-1)/sw]

(3)如果输入高度和宽度可以被步幅整除:(nh/sh)✖(nw/sw)

(另外:步幅通常取2)

总结

(1)填充和步幅是卷积层的超参数

(2)填充在输入周围添加额外的行/列,来控制输出形状的减少量

(3)步幅是每次滑动核窗口时的行/列的步长,可以成倍的减少输出形状

代码实现填充和步幅

在所有侧边填充1个像素。

import torch
from torch import nndef comp_conv2d(conv2d, X):X = X.reshape((1,1) + X.shape)Y = conv2d(X)return Y.reshape(Y.shape[2:])conv2d=nn.Conv2d(1,1,kernel_size=3,padding=1) # 核大小3✖3,上下左右各填充1行
X=torch.rand(size=(8,8)) # p是2✖2,k是3✖3,满足p=k-1,所有输出的形状不变
comp_conv2d(conv2d,X).shape
torch.Size([8, 8])

填充不同的高度和宽度。

conv2d=nn.Conv2d(1, 1, kernel_size=(5,3), padding=(2,1)) # 核5✖3,为保证输出形状不变,应该填充上下各2,左右各1
comp_conv2d(conv2d, X).shape
torch.Size([8, 8])

将高度和宽度的步幅设置为2

conv2d=nn.Conv2d(1,1,kernel_size=3,padding=1,stride=2) # 当步幅为2,一般输出的形状缩小为原来一半
comp_conv2d(conv2d,X).shape
torch.Size([4, 4])

一个稍微复杂的例子

conv2d=nn.Conv2d(1,1,kernel_size=(3,5),padding=(0,1), stride=(3,4))
comp_conv2d(conv2d,X).shape  # (8-3+0+3)/3=2; (8-5+1*2+4)/4=2
torch.Size([2, 2])

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

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

相关文章

理解 Golang 变量在内存分配中的规则

为什么有些变量在堆中分配、有些却在栈中分配? 我们先看来栈和堆的特点: 简单总结就是: 栈:函数局部变量,小数据 堆:大的局部变量,函数内部产生逃逸的变量,动态分配的数据&#x…

VueRouter的介绍:什么是路由呢?VueRouter的作用及使用,VueRouter的使用分为5个步骤和特定的2步

1.什么是路由呢? 路由就是路径和组件之间的映射关系,当我们路径变化的时候,就要切换对应的组件。 在前端中解决路径与组件之间的映射关系,官方提供了VueRouter这个插件 2.VueRouter的作用及使用 作用:修改地址栏路…

ios苹果ipa文件app内测分发有哪些操作流程

哈喽,大家好,咕噜淼淼又来和大家见面啦,在iOS应用开发过程中,进行内测分发是非常重要的一环,它能帮助开发者发现并修复应用中的问题,提升用户体验。上两期咱们一起探讨了一下App内测分发的目的及优势&#…

【计算机考研】408有多难?复习到什么程度才能120+?

备考计算机考研的408统考是一件需要花费精力和时间的事情,我想分享一些基于个人经验的备考策略,希望能帮助到大家。 首先,我将备考过程划分为三轮进行。在第一轮复习阶段,我每天安排3小时的时间学习机组原理和操作系统&#xff0…

Android Binder——ServiceManager初始化(六)

上一篇文章介绍到 servicemanager 的 main 函数中主要做了四件事: 1)初始化 binder 驱动。 2)将自身以“manager”添加到 servicemanager 中的 map 集合中。 3)注册成为 binder 驱动的上下问管理者。 4)给 Looper 设置 callback,进入无限循环,处理 client 端发来的请求。…

Linux 函数学习

1、Linux poll 函数 int poll(struct pollfd *fds, nfds_t nfds, int timeout); fds&#xff1a; 需要轮询的fd集合 nfds&#xff1a;需要轮询的fds数量 timeout&#xff1a;超时时间 返回值&#xff1a;0 超时&#xff0c;<0 发生异常&#xff0c;> 0 存在数据变化 …

【LeetCode热题100】153. 寻找旋转排序数组中的最小值(二分)

一.题目要求 已知一个长度为 n 的数组&#xff0c;预先按照升序排列&#xff0c;经由 1 到 n 次 旋转 后&#xff0c;得到输入数组。例如&#xff0c;原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到&#xff1a; 若旋转 4 次&#xff0c;则可以得到 [4,5,6,7,0,1,2]若旋转 7…

几行代码搞懂静态类和静态方法

视频链接: 视频 代码链接: 源码 在C#中&#xff0c;静态类&#xff08;Static Class&#xff09;和静态方法&#xff08;Static Method&#xff09;是面向对象编程中的重要概念。它们允许你创建不依赖于对象实例的方法和属性&#xff0c;而是直接通过类名来访问。 静态类 静…

python学习笔记——类

1. 类和对象**** 类、类属性、类方法不需要实例化就可以直接访问 实例相关&#xff0c;如实例属性、实例方法必须实例化后才可以访问 1.1. 类、类属性、实例属性、私有属性**** 1.1.1. 定义**** 类就是拥有相同属性和功能对象的集合 动物&#xff1a;猫、狗、鸡 人类&…

【AIGC调研系列】AI大模型结合迁移学习进行微调的应用

AI大模型结合迁移学习进行微调的应用主要体现在通过预训练模型快速适应新任务&#xff0c;提高模型性能和准确性。迁移学习允许我们利用在其他任务上学到的知识来加速新任务的学习过程&#xff0c;从而减少对大量标注数据的依赖&#xff0c;提高训练效率[1][2][3]。在AI领域&am…

Python mixin

Python 中的 Mixin 类是一种特殊的继承机制,它允许我们在不修改类层次结构的情况下,向一个类添加额外的功能。Mixin 类通常包含一些可复用的方法或属性,可以被其他类继承和使用。 Mixin 类的主要特点如下: 可复用性: Mixin 类包含可重用的方法或属性,可以被多个类继承和使用,提…

Vue使用高德地图

1.在高德平台注册账号 2.我的 > 管理管理中添加Key 3.安装依赖 npm i amap/amap-jsapi-loader --save 或 yarn add amap/amap-jsapi-loader --save 4.导入 AMapLoade import AMapLoader from amap/amap-jsapi-loader; 5.直接上代码&#xff0c;做好了注释&#xff08;初始化…

在内网环境下成功安装Vue Devtools的曲折历程与解决方案

经过一系列周折的探索&#xff0c;笔者在尝试将Vue Devtools扩展程序接入内网环境下的Chrome浏览器过程中遭遇了种种挑战&#xff0c;常规的在线安装途径均未能奏效。然而&#xff0c;功夫不负有心人&#xff0c;最终发掘了一种有效的方法&#xff0c;使得内网安装成为可能。 …

[AIGC] MySQL连接查询全面解析

在数据库操作中&#xff0c;经常需要从多个表中获取数据&#xff0c;并对这些数据进行合并处理。在MySQL中&#xff0c;我们通常会使用“连接&#xff08;JOIN&#xff09;”操作来实现这一需求。 文章目录 什么是连接查询MySQL支持的连接查询类型 什么是连接查询 连接查询是S…

3. Django 初探路由

3. 初探路由 一个完整的路由包含: 路由地址, 视图函数(或者视图类), 可选变量和路由命名. 本章讲述Django的路由编写规则与使用方法, 内容分为: 路由定义规则, 命名空间与路由命名, 路由的使用方式.3.1 路由定义规则 路由称为URL (Uniform Resource Locator, 统一资源定位符)…

研判特征流量

研判溯源应急 准备-检测-抑制-根除-恢复-跟踪总结 中级 内存马的判断和清除&#xff1a; 判断方式&#xff1a;先判断是通过什么方法注入的内存马&#xff0c;可以先查看web日志是否有可疑的web访问日志&#xff0c;如果是filter或者listener类型就会有大量url请求路径相同…

【IPV6】--- IPV6过渡技术之6 over 4隧道配置

1. IPV4和IPV6有什么区别&#xff1f; 2. IPV6如何在设备上配置&#xff1f; 3. IPV4和IPV6如何跨协议实现通信&#xff1f; 1. IPV4和IPV6 --- IPV6技术 - IP协议第六版 - 128位二进制数 - 2^12843亿*43亿*43亿*43亿 --- IPV4技术 - IP协议第四版 - 192.1…

python项目练习——18.文件加密和解密工具

这个项目可以让用户加密文件&#xff0c;以保护文件内容的安全性&#xff0c;也可以让用户解密已加密的文件。这个项目涉及到文件操作、加密算法等方面的技术。 代码示例&#xff1a; from cryptography.fernet import Fernet # 导入 Fernet 加密算法 import os # 导入 os 模…

Nginx 有关于网络连接的配置

网络链接的设置 超时时间 client_header_timeout client_header_timeout time; #默认单位 秒 客户端与服务器建立连接接收 HTTP 请求的时间&#xff0c;超出设置的时间即为超时。 默认&#xff1a;60 配置块&#xff1a;http、server、location client_body_timeout cl…

腾讯云流量怎么计算的?轻量服务器流量价格表

腾讯云轻量应用服务器套餐带流量包&#xff0c;就是有月流量限制的意思&#xff0c;超出轻量套餐的流量需要另外支付流量费&#xff0c;轻量服务器地域不同超额流量费用也不同&#xff0c;北京上海广州等中国内地地域流量价格是0.8元每GB&#xff0c;中国香港地域流量价格是1元…