[Pytorch]Broadcasting广播机制

news2024/9/20 18:36:11

文章目录

  • Broadcasting广播机制
    • Broadcastable
    • Broadcasting

Broadcasting广播机制

Broadcasting机制用于在不同维度的张量进行运算时进行维度的自动增加与扩展,Broadcasting机制使用的前提是两个参与运算的张量是可broadcastable的。

Broadcastable

怎样的两个向量是Broadcastable的,也就是可使用Broadcasting机制的?
规定右边的维度为小维度,即shape(2,32,13,13)中右边的13为最小的维度
张量x和张量y如果符合以下条件就是broadcastable的:

  • 将x的shape与y的shape按照最右边的最小维度对齐,从小维度开始向左看:对于每一个二者都有的维度,如果x在该维度的大小为1或y在该维度的大小为1或二者都是1,或者二者在该维度的大小都不是1但是二者维度大小相等。

例如:

example 1: x,y,z中任意两个张量是broadcastable的
x.shape = [2, 3, 4]
y.shape =     [3, 4]
z.shape =         [4]

对于x和z,按照小维度对齐后,在最小的维度上x和z的维度大小都是4,符合规则。
对于x和y,按照小维度对齐后,在最小的维度上x和y的维度大小都是4,在次小维度上x和y的维度大小都是3,也符合规则。

example 2:x,y不是broadcastable的
x.shape = [4, 5, 13, 13]
y.shape =      [4, 13, 1]

对于x和y,按照小维度对齐后,最小维度上y的维度大小为1,该维度符合,次小维度上x的维度大小和y的维度大小相等,该维度符合,但是在第三小维度上x的维度大小为5,而y的维度大小为4,二者非1且不相等,所以不符合broadcasting的规则。

Broadcasting

当两个broadcastable的符合broadcasting规则的张量在进行相加时,会自动使用维度增加和扩展运算使两个张量拥有相同的维度并计算,维度增加和扩展的规则如下:

  • 将x的shape与y的shape按照最右边的最小维度对齐,从小维度开始向左看:对于每一个二者都有的维度,将该维度扩展到二者的最大值;当其中一个张量的维度已经不存在,而另一个张量维度更多时,则给维度少的张量插入新的维度,使二者维度数量保持一致,同时也要将该维度扩展到二者中在该维度大小的最大值。

例如:

  • tensor a = [1, 2, 3]
  • tensor b = [10,
                      20,
                      30,
                      40]

将维度对齐后:

  • tensor b.shape = [4, 1]
  • tensor a.shape =     [3]

张量a和b扩展的详细过程:

  • 最小维度上,张量a的维度大小为3是最大值,张量b在该维度上扩展至大小3: [4,1] => [4,3]
  • 在次小维度上,张量a在该维度上不存在,则插入一个新的维度给张量a:[3] => [1,3]
  • 插入新的维度后在次小维度上,张量b在该维度上的维度大小为4是最大值,张量a在该维度上进行扩展至大小4:[1,3] => [4,3]
  • 维度扩展的方式就是在该维度上将原数据进行复制(逻辑复制,不开辟实际内存)
a = torch.tensor([1, 2, 3])
b = torch.tensor([
    [10],
    [20],
    [30],
    [40],
])
print(f"{a.shape} + {b.shape} = {(a+b).shape}")
print(a+b)

在这里插入图片描述

另一个示例:

x = torch.randint(0, 2, [3, 1])
y = torch.randint(0, 2, [4])
print(f"{x.shape} + {y.shape} = {(x+y).shape}")

在这里插入图片描述

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

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

相关文章

【libdatachannel】pycharm运行streamer的信令服务及streamer与js客户端联调1

一 信令服务:启动py服务器 ssl必须额外指定 # Usage: ./server.py [[host:]port] [SSL certificate file]文档给出了服务的启动命令: python3 -m http.server --bind 127.0.0.1 8080 直接运行: python的信令服务 #!/usr/bin/env python # # …

图的广度优先遍历和深度优先遍历

前言:在上一篇博客我们学习了图的基本操作,包括图的建立、结点插入与删除等操作,怎么判断我们建立的图是否正确,很简单把它输出出来就是,但是如何输出它,这就是图的遍历问题了。 一.图的遍历 图的遍历是指…

初识C语言的static关键字(修饰局部变量、全局变量和函数)

目录 学习目标 1.static 修饰局部变量 2.static 修饰全局变量 3.static 修饰函数 学习目标 static修饰局部变量static修饰全局变量static修饰函数 1.static 修饰局部变量 (1)static修饰局部变量后,这时局部变量就是静态的局部变量。 &am…

光模块安规认证简介

背景 认证是指由认证机构证明产品、服务、管理体系符合相关技术规范的强制性要求或者标准的合格评定活动。其中产品认证是通过对产品的不同层级认证实现各级材料的可追溯性。认证按照内容分类大致包括:安全、电磁兼容(EMC)和环保等。按照必要…

PyTorch 中通道在最后的内存格式(beta)

PyTorch 中通道在最后的内存格式(beta) 什么是通道在最后 通道在最后的内存格式是在保留内存尺寸的顺序中对 NCHW 张量进行排序的另一种方法。 通道最后一个张量的排序方式使通道成为最密集的维度(又称为每像素存储图像)。 例如…

Java——《面试题——SpringCloud》

前文 java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 Java——《面试题——MySQL篇》​​​​​​ 目录 前文 1、什么是SpringCloud 2、什…

实战:NPMYARN构建工具实践-2023.6.22(测试成功)

实战:NPM&YARN构建工具实践-2023.6.22(测试成功) 目录 推荐文章 https://www.yuque.com/xyy-onlyone/aevhhf?# 《玩转Typora》 实验环境 gitlab/gitlab-ce:15.0.3-ce.0 jenkins/jenkins:2.346.3-2-lts-jdk11 openjdk 11.0.18 [rootDevops6 ~]#npm -v 6.14.12…

智能汽车 | 整车控制器(VCU)系统框图,功能拆解及供应商排名

摘要: 随着新能源EE架构的迭代及控制单元集成度越来越高,VCU的功能可能会被拆解到中央控制器域控制器,或者拆解到多合一的控制单元; VCU(Vehicle Control Unit)即整车控制器,是新能源汽车控制系…

JavaSE基础语法--static成员

假设我们现在有一个场景,定义一个学生类。 class Student{private String name;private int age;private int classroom_num;public Student(String name, int age, int classroom_num) {this.name name;this.age age;this.classroom_num classroom_num;} } pu…

翻筋斗觅食策略改进灰狼算法(IGWO)

目录 一、动态扰动因子策略 二、翻筋斗觅食策略 三、改进灰狼算法收敛曲线图 灰狼优化算法存在收敛的不合理性等缺陷,目前对GWO算法的收敛性改进方式较少,除此之外,当GWO迭代至后期,所有灰狼个体都逼近狼、狼、狼,…

HarmonyOS学习路之开发篇—多媒体开发(媒体会话管理开发)

一、媒体会话管理开发 AVSession是一套媒体播放控制框架,对媒体服务和界面进行解耦,并提供规范的通信接口,使应用可以自由、高效地在不同的媒体之间完成切换。 约束与限制 在使用完AVSession类后,需要及时进行资源释放。播放器类…

Linux常用命令——ftpshut命令

在线Linux命令查询工具 ftpshut 在指定的时间关闭FTP服务器 补充说明 功能说明:在指定的时间关闭ftp服务器。本指令提供系统管理者在设置的时间关闭FTP服务器,且能在关闭之前发出警告信息通知用户。关闭时间若设置后为"none",则…

【实战项目开发技术分享】如何解决机器人运动不平稳的问题

文章目录 前言一、机器人设计的考虑因素二、控制算法的优化三、传感器改进四、实时监测与调试五、总结前言 机器人的运动平稳性对于其在各种应用中的成功执行任务至关重要。当机器人在执行任务过程中出现不稳定的运动,可能导致任务失败、损坏周围环境或甚至危及人员安全。因此…

ChatGPT在能源行业的预测场景:智能能源管理和异常检测的未来趋势

第一章:引言 能源是现代社会发展的关键驱动力之一,然而,传统的能源管理方法存在许多挑战,如能源浪费、供需不平衡以及能源异常等。为了应对这些挑战,智能能源管理系统逐渐崭露头角。在本文中,我们将探讨Ch…

基于Java+Swing实现仿QQ屏幕截图工具

基于JavaSwing实现仿QQ屏幕截图工具 一、系统介绍二、功能展示三、其它1.其他系统实现四.获取源码 一、系统介绍 实现能够实现对屏幕的随机截取,复制,保存以及添加文字等操作,便于用户对数据的处理。 该软件的功能: &#xff08…

I/O设备与主机信息传送的方式(程序查询方式,程序中断方式,DMA方式)

一.程序查询方式 CPU和I/O设备串行工作,CPU连接I/O设备和内存,CPU需要等待,效率很低 (由CPU通过程序不断查询IO设备是否已经做好准备,从而控制IO设备与主机交换信息) 二.程序中断方式: 中断&…

前端Vue自定义数字输入框 带加减按钮的数字输入框组件

前端Vue自定义数字输入框 带加减按钮的数字输入框组件&#xff0c; 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13163 效果图如下&#xff1a; # cc-numbox #### 使用方法 使用方法 <!-- title: 标题 isSetMax: 是否设置最…

手把手叫你学会搭建FreeRTOS工程文件

手把手教你学会搭建FreeRTOS工程文件 一.序言二.提取文件2.1 Source文件夹2.2 portble文件夹2.3 Demo 文件夹 三.建立FreeRTOS工程3.1 新建FreeRTOS目录3.2 移植src文件夹3.3 移植port文件夹3.4 添加include文件夹3.5 提取FreeRTOSConfig.h文件3.5.1 拷贝FreeRTOSConfig.h文件 …

前端Vue自定义简单实用轮播图封装组件 快速实现轮播图

前端Vue自定义简单实用轮播图封装组件 快速实现轮播图&#xff0c; 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13153 效果图如下&#xff1a; # cc-mySwiper #### 使用方法 使用方法 <!-- 自定义轮播图 swiperArr: 轮播数…

Day5——数据库基础2-SQL查询语句

网络安全学习笔记Day5 SQL查询语句&#xff08;重在实操&#xff01;&#xff01;&#xff01;&#xff09; 回顾1.中英文符号混淆2.数据库的操作流程&#xff08;回顾mysql相关语句&#xff09;3.“everything”工具 学习目标1.查询数据基本语法形式基本查询语句表单查询where…