广播机制(Broadcasting)

embedded/2025/3/14 11:48:10/

NumPy 默认是元素与元素的操作

所以当我们使用常规的运算符,如 +、-、*、/。默认是元素与元素相操作(pointwise operation)。

import numpy as np
a = np.array([1.0, 2.0, 3.0])
b = np.array([2.0, 2.0, 2.0])
print(a + b)
print(a - b)
print(a * b)
print(a / b)[3. 4. 5.]
[-1.  0.  1.]
[2. 4. 6.]
[0.5 1.  1.5]

广播规则

两个向量能够进行元素级的操作需要满足以下两个条件中的一个:

  • 它们所有轴上的维度相同
  • 在每个轴上,如果维度不同,那么有一个维度应该为 1,或这个轴不存在
    注: 关于轴的理解,如一个向量的shape为(3,256,256),那么它的轴个数为 3,第一个轴维度为3,第二个轴维度为 256,第三个轴维度为 256

比较轴的维度时,我们是从右向左看,如:

# 此向量有三个轴,从右到左的维度为 256 256 3
img = np.random.randn(3,256,256)
img .shape
(3, 256, 256)

当我们想让 img 乘以标量 2 会发生什么呢

img*2img:(3, 256, 256)
# 标量 2,会首先变为与img轴数相同的数据(1,1,1)
# 与 img 最后一个维度进行对比 img 最后一个维度为256,所以将标量最后一个维度变为256
# 比较倒数2个维度,将标量最后一个维度变为256
# 比较倒数3个维度,将标量最后一个维度变为256
# 此时标量伸展的维度与img相同,两者可以直接进行元素运算
scale:2
2->(1,1,1)->(1,1,256,)->(1,256,256)->(3,256,256)

更多例子:

# 满足所有轴维度相同
>>> x=torch.empty(5,7,3)
>>> y=torch.empty(5,7,3)
# same shapes are always broadcastable (i.e. the above rules always hold)>>> x=torch.empty((0,))
>>> y=torch.empty(2,2)
# x and y are not broadcastable, because x does not have at least 1 dimension# can line up trailing dimensions
>>> x=torch.empty(5,3,4,1)
>>> y=torch.empty(  3,1,1)
# x and y are broadcastable.
# 1st trailing dimension: both have size 1
# 2nd trailing dimension: y has size 1
# 3rd trailing dimension: x size == y size
# 4th trailing dimension: y dimension doesn't exist# but:
>>> x=torch.empty(5,2,4,1)
>>> y=torch.empty(  3,1,1)
# x and y are not broadcastable, because in the 3rd trailing dimension 2 != 3

参考:https://numpy.org/doc/stable/user/basics.broadcasting.html
https://pytorch.org/docs/stable/notes/broadcasting.html


http://www.ppmy.cn/embedded/172479.html

相关文章

【实战ES】实战 Elasticsearch:快速上手与深度实践-8.2.1AWS OpenSearch无服务器方案

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 8.2.1AWS OpenSearch 无服务器方案深度解析与实践指南1. Serverless架构的核心价值与行业趋势1.1 传统Elasticsearch集群的运维挑战1.2 Serverless技术演进路线技术特性对比…

基于ASP.NET校园二手交易网站设计与实现

摘要 校园二手交易市场伴随互联网技术的迅猛发展以及校园内资源共享需求的增长而逐渐兴起。基于ASP.NET开发的校园二手交易网站,目的在于为高校师生打造一个便捷、安全且高效的二手物品交易平台。此网站借助ASP.NET技术开展开发工作,并且结合SQL Server数…

盛夏将至,风扇灯技术的革新和趋势解读--其利天下技术BLDC算法提供商

风扇灯是2003年进入中国市场的,凭借着节省空间、可调节性强和样式多样化等优势俘获不少消费者的芳心。 数据显示,2022年风扇灯的市场规模为26.54亿美元,预计到2030年将达到63.33亿美元,2023年至2030年的复合年增长率为9.61%。在市…

手写一个Tomcat

Tomcat 是一个广泛使用的开源 Java Servlet 容器,用于运行 Java Web 应用程序。虽然 Tomcat 本身功能强大且复杂,但通过手写一个简易版的 Tomcat,我们可以更好地理解其核心工作原理。本文将带你一步步实现一个简易版的 Tomcat,并深…

日常开发记录-radioGroup组件

日常开发记录-radioGroup组件 1.前提2.问题&#xff1a;无限循环调用3.解释Vue 事件传播机制分析与无限循环原因解释4.解决 1.前提 在上一章的&#xff0c;我们实现了radio组件。从这进入了解 新增个radioGroup组件呢。 <template><divclass"q-radio-group&quo…

并行算法_第十章_《C++并发编程实战》笔记

并行算法 1. 核心知识点2. 使用并行算法3. 数据竞争与线程安全4. 性能优化5. 常见问题与陷阱6. 最佳实践7. 多选题7.1 题目7.2 多选答案 9. 设计题目10. 设计题目答案 1. 核心知识点 执行策略&#xff08;Execution Policies&#xff09; C17引入的执行策略允许开发者指定算法…

亚马逊COSMO算法解读:新搜索时代的流量分配与DeepBI AI驱动的智能优化策略

亚马逊COSMO算法的推出&#xff0c;标志着其搜索和推荐系统进入了智能化、个性化的新阶段。该算法通过分析用户购物习惯、搜索历史、浏览行为等数据&#xff0c;为买家提供精准推荐&#xff0c;同时对卖家的运营策略提出了更高的要求。在这一背景下&#xff0c;AI驱动的DeepBI能…

探索 PyTorch 中的 ConvTranspose2d 及其转置卷积家族

探索 PyTorch 中的 ConvTranspose2d 及其转置卷积家族 在深度学习领域&#xff0c;尤其是图像处理任务中&#xff0c;卷积神经网络&#xff08;CNN&#xff09;扮演着重要角色。而当我们需要在网络中进行上采样&#xff08;Upsampling&#xff09;时&#xff0c;转置卷积&…