iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >pytorch中的广播语义
  • 771
分享到

pytorch中的广播语义

2024-04-02 19:04:59 771人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录1、什么是广播语义?2、广播语义的规则3、不符合广播语义的例子4、符合广播语义的例子PyTorch的广播语义(broadcasting semantics),和numpy的很像,

PyTorch的广播语义(broadcasting semantics),和numpy的很像,所以可以先看看numpy的文档:

1、什么是广播语义?

官方文档有这样一个解释:

In short, if a PyTorch operation supports broadcast, then its Tensor arguments can be automatically expanded to be of equal sizes (without making copies of the data).

这句话的意思大概是:简单的说,如果一个pytorch操作支持广播,那么它的Tensor参数可以自动的扩展为相同的尺寸(不需要复制数据)。

按照我的理解,应该是指算法计算过程中,不同的Tensor如果size不同,但是符合一定的规则,那么可以自动的进行维度扩展,来实现Tensor的计算。在维度扩展的过程中,并不是真的把维度小的Tensor复制为和维度大的Tensor相同,因为这样太浪费内存了。

2、广播语义的规则

首先来看标准的情况,两个Tensor的size相同,则可以直接计算:

x = torch.empty((4, 2, 3))
y = torch.empty((4, 2, 3)) 
print((x+y).size()) 

输出:

torch.Size([4, 2, 3]) 

但是,如果两个Tensor的维度并不相同,pytorch也是可以根据下面的两个法则进行计算:

  • (1)Each tensor has at least one dimension.
  • (2)When iterating over the dimension sizes, starting at the trailing dimension, the dimension sizes must either be equal, one of them is 1, or one of them does not exist.
  • 每个Tensor至少有一个维度。
  • 迭代标注尺寸时,从后面的标注开始

第一个规则要求每个参与计算的Tensor至少有一个维度,第二个规则是指在维度迭代时,从最后一个维度开始,可以有三种情况:

  • 维度相等
  • 其中一个维度是1
  • 其中一个维度不存在

3、不符合广播语义的例子

x = torch.empty((0, ))
y = torch.empty((2, 3)) 
print((x + y).size())

输出:

RuntimeError: The size of tensor a (0) must match  the size of tensor b (3) at non-singleton dimension 1 

这里,不满足第一个规则“每个参与计算的Tensor至少有一个维度”。

x = torch.empty(5, 2, 4, 1) 
y = torch.empty(3, 1, 1) 
print((x + y).size())

输出:

RuntimeError: The size of tensor a (2) must match 
the size of tensor b (3) at non-singleton dimension 1 

这里,不满足第二个规则,因为从最后的维度开始迭代的过程中,倒数第三个维度:x是2,y是3。这并不符合第二条规则的三种情况,所以不能使用广播语义。

4、符合广播语义的例子

x = torch.empty(5, 3, 4, 1) 
y = torch.empty(3, 1, 1) 
print((x + y).size()) 

输出:

torch.Size([5, 3, 4, 1]) 

x是四维的,y是三维的,从最后一个维度开始迭代:

  • 最后一维:x是1,y是1,满足规则二 
  • 倒数第二维:x是4,y是1,满足规则二 
  • 倒数第三维:x是3,y是3,满足规则一
  • 倒数第四维:x是5,y是0,满足规则一 

 到此这篇关于pytorch中的广播语义的文章就介绍到这了,更多相关pytorch广播语义内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: pytorch中的广播语义

本文链接: https://www.lsjlt.com/news/141867.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • pytorch中的广播语义
    目录1、什么是广播语义?2、广播语义的规则3、不符合广播语义的例子4、符合广播语义的例子pytorch的广播语义(broadcasting semantics),和numpy的很像,...
    99+
    2024-04-02
  • pytorch中的广播语义是什么
    这篇文章主要介绍“pytorch中的广播语义是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“pytorch中的广播语义是什么”文章能帮助大家解决问题。1、什么是广播语义?官方文档有这样一个解释:...
    99+
    2023-06-29
  • Pytorch中的广播机制详解(Broadcast)
    目录1. Pytorch中的广播机制2. 广播机制的理解3. 两个张量进行广播机制的条件4. 当两个张量满足可广播条件后5. 从空间上理解广播机制总结1. Pytorch中的广播机制...
    99+
    2023-01-03
    Pytorch广播机制 Pytorch Broadcast 广播机制
  • Android自定义广播接收
    本文实例为大家分享了Android自定义广播接收的具体代码,供大家参考,具体内容如下 实现效果: MainActivity.java代码: package com.henu.b...
    99+
    2024-04-02
  • 怎么在Android中接收自定义广播
    本篇文章给大家分享的是有关怎么在Android中接收自定义广播,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。MainActivity.java代码:package c...
    99+
    2023-06-15
  • C语言广播的使用详解
    向子网中多台计算机发送消息,并且子网中所有的计算机都可以接收到发送方发送的消息,每个广播消息都包含一个特殊的IP地址,这个IP中子网内主机标志部分的二进制全部为1(也就是网络号是25...
    99+
    2024-04-02
  • Android 中怎么在有序广播中添加自定义权限
    这篇文章给大家介绍Android 中怎么在有序广播中添加自定义权限,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Android 中在有序广播中添加自定义权限的实例有序广播说明:有序广播因为要处理消息的处理结果,所以要复...
    99+
    2023-05-30
    android
  • Kotlin四大组件中的broadcast广播
    目录创建Fragmen 碎片主界面中添加ViewPager创建广播小结在上一章中,有个问题可能大家都没有注意,Acitivity 在使用startActivityForResult后...
    99+
    2022-12-08
    Kotlin broadcast Kotlin broadcast广播 Kotlin 广播
  • Spark中的广播变量是什么
    广播变量是一种分布式共享变量,用于在集群中的所有节点上保持一份只读的变量副本。这样可以在所有节点上使用同一个变量,避免在每个任务中都...
    99+
    2024-03-05
    Spark
  • NumPy中的Broadcasting广播机制是什么
    这篇文章主要介绍NumPy中的Broadcasting广播机制是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!广播机制概述让我们探索numpy中一个更高级的概念,这个概念被称为广播。 广播展现了NumPy在算术运...
    99+
    2023-06-15
  • python的广播机制详解
    目录为什么会有广播机制在矩阵或向量相关运算中的广播机制1、一般的运算2、一个矩阵一个向量的情况3、两个向量4、矩阵乘法的广播机制总结为什么会有广播机制 python语言在设计的时候,...
    99+
    2024-04-02
  • Spark中的广义MapReduce是什么
    在Spark中,广义的MapReduce是指使用Map和Reduce操作以及其他数据处理操作来进行分布式数据处理的一种模型。与传统的...
    99+
    2024-03-05
    Spark
  • Android中怎么使用本地广播
    这篇文章给大家介绍Android中怎么使用本地广播,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MainActivity代码package com.example.luobo.mybroadcastrecei...
    99+
    2023-05-30
    android
  • 深入解析NumPy中的Broadcasting广播机制
    前言 在吴恩达老师的深度学习专项课程中,老师有提到NumPy中的广播机制,同时那一周的测验也有涉及到广播机制的题目。那么,到底什么是NumPy中的广播机制? 官方文档 接下来到了看官...
    99+
    2024-04-02
  • Spark中的广播变量有什么作用
    在Spark中,广播变量(Broadcast Variables)用于高效地向所有工作节点发送一个较大的只读值,从而减少每个任务中需...
    99+
    2024-03-05
    Spark
  • android中广播的使用场景有哪些
    在Android中,广播(Broadcast)的使用场景包括以下几种:1. 系统级广播:系统级广播是由Android系统发送的广播,...
    99+
    2023-09-04
    android
  • 在Go语言中如何解决并发消息广播问题?
    在Go语言中如何解决并发消息广播问题?随着互联网的发展,越来越多的应用需要实现消息广播功能,即将一条消息发送给多个接收者。在并发的环境中,要确保消息能够被所有接收者同时接收,而不会出现竞争条件或漏接的情况。在Go语言中,通过使用通道和协程,...
    99+
    2023-10-22
    互斥锁(Mutex) 读写锁(RWMutex) 通道(Channels)
  • 如何用PyTorch进行语义分割
    本篇内容主要讲解“如何用PyTorch进行语义分割”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用PyTorch进行语义分割”吧!预设置在开始训练之前,得首先设置一下库、数据集等。库准备pi...
    99+
    2023-06-15
  • Broadcast广播机制在PytorchTensorNumpy中的使用详解
    目录1.什么是广播机制2.广播机制的规则3.代码举例4.原地操作1.什么是广播机制 根据线性代数的运算规则我们知道,矩阵运算往往都是在两个矩阵维度相同或者相匹配时才能运算。比如加减法...
    99+
    2024-04-02
  • python的广播机制是怎样的
    本篇文章为大家展示了python的广播机制是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。为什么会有广播机制python语言在设计的时候,就就考虑到用于两个运算的矩阵或向量维度不匹配的问题。例...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作