Pytorch教程(十五):element-wise、Broadcasting
t1 = torch.tensor([[1,2],[3,4]
], dtype=torch.float32)
t2 = torch.tensor([[9,8],[7,6]
], dtype=torch.float32)
我们先创建了两个秩为2,形状为 2×22 \times 22×2的张量,这意味着我们有两个轴,他们都有两个元素的长度,第一个轴的元素是数组,第二个轴的元素是数字。
两个张量必须具有相同数量的元素才能执行一个element-wise操作。也就是说两个张量必须具有相同的形状才能执行一个元素操作,具有相同的形状意味着每一个对应的轴上有相同数量的轴,并且他们的长度相同。
在相应位置的每一对元素被加在一起,产生一个具有相同形状的新张量,所以加法是一个element-wise运算。所有其他的算数运算,比如减法、乘法、除法也是元素运算。
我们通常用张量看到的运算是使用标量值的算数运算,而下面这些例子打破了我们建立的规则,即元素的操作需要在张量有相同的形状的前提下进行,所有的标量值都是零阶张量,这就意味着他们没有形状,我们的张量t1是一个2×22 \times 22×2的二阶张量,那么这时如何调整的呢?
可能想到的第一个解决方案是,操作只是简单地使用单个标量值,并对一个张量中的每个元素进行操作,这种逻辑是可行的,然而这有点误导人,它打破了一个更普遍的情况,即我们没有使用标量的情况,要以不同的方式来思考这些操作,我们需要引入张量广播的概念。
广播定义了在元素操作过程中如何处理不同形状的张量。
我们重新考虑一下t1+2
运算,标量张量被扩展到张量t1的形状,然后进行元素运算,通过对numpy函数的广播,我们可以看到在标量值上的广播是什么样子:
下面看一个稍微复杂一点的情况:
即使这些张量有不同的shape,但依然可以相加,这正是得益于广播机制,较低的秩向量t2
将通过广播进行转换,以匹配更高阶张量t1
的形状,而元素将像往常一样执行。我们可以使用广播到numpy函数来检查广播转换,然后运行操作:
可以看出t2
被广播成了shape为2×22 \times 22×2的tensor,这样t1 + t2
就是相同shape之间的操作。而这就是torch内部自动帮我们做的,我们无需手动执行广播。
Pytorch教程(十五):element-wise、Broadcasting相关推荐
- PyTorch教程(五):Broadcasting
Broadcasting可以自动进行维度的扩展,而且不需要拷贝数据. 例如: import torcha = torch.rand(3,4) # tensor([[0.0422, 0.9152, 0. ...
- 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(二)
前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 上一讲我们说了CubeMX配置SDRAM的一些基本配置,还有FMC跟SDRAM的讲解,这一讲我们 ...
- 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(一)
前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 本文 1首先讲解什么是FMC及SDRAM,W9825G6KH芯片原理,2基于CubeMx创建工程 ...
- 【Visual C++】游戏开发笔记四十七 浅墨DirectX教程十五 翱翔于三维世界 摄像机的实现
分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 本系列文章由zhm ...
- 【Visual C++】游戏开发笔记四十七 浅墨DirectX教程十五 翱翔于三维世界:摄像机的实现...
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:http://blog.csdn.net/zhmxy555/article/details/8657656 作者:毛星云(浅墨) ...
- 【Visual C++】游戏开发笔记四十七 浅墨DirectX教程十五 翱翔于三维世界:摄像机的实现
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8657656 作者:毛星云( ...
- nCode:DesignLife案例教程十五
nCode:DesignLife 案例十五--蠕变分析 15.1 案例文件 15.2 目标 15.3 设计问题 在本案例中,我们将使用DesignLife的Creep Engine和Hybrid Lo ...
- WebGL简易教程(十五):加载gltf模型
文章目录 1. 概述 2. 实例 2.1. 数据 2.2. 程序 2.2.1. 文件读取 2.2.2. glTF格式解析 2.2.2.1. 场景节点 2.2.2.2. 网格 2.2.2.3. 缓冲,缓 ...
- 【小白学习PyTorch教程】五、在 PyTorch 中使用 Datasets 和 DataLoader 自定义数据
「@Author:Runsen」 有时候,在处理大数据集时,一次将整个数据加载到内存中变得非常难. 因此,唯一的方法是将数据分批加载到内存中进行处理,这需要编写额外的代码来执行此操作.对此,PyTor ...
- twisted系列教程十五–测试twisted代码
Introduction 在这个系列中我们也已经写了很多twisted 代码了,但目前为止我们忽略了一个很重要的事情-测试.你可能也一直在想我们怎样用一个同步的测试框架unitest来测试我们的异步的 ...
最新文章
- python中的绘图模块turtle的使用
- rest-framework 响应器(渲染器)
- JavaScript网页换肤
- 阿里云边缘云荣获“分布式云创新奖”与“先进边缘云架构奖”
- 大型双标现场?摩托车举报特斯拉逆行反被罚
- 设计灵感|引导页设计中如何借助图形来展现场景?
- 添加rabbitmq守护进程
- 那些让程序员提升30-80%的快捷键大全整理
- 【react】 react 中 前后端数据的交互方式 (原生的ajax、jq的ajax、axios、fetch )...
- 简易呼吸灯c语言程序,51单片机(呼吸灯)C语言版.docx
- WAREZ无形帝国(盗版之源)
- 什么是网络安全网格?
- 数据分析与可视化(四)Pandas学习基础一:统计分析基础
- leetcode#248 中心对称数 III
- 共模和差模信号及其噪音抑制
- 2021年10月世界编程语言排行
- 小象学院 零基础Python入门 3/4 python开发环境配置
- Wps格式怎么转换成word,只要三分钟轻松搞定
- python输出间隔_Python:print输出间隔,换行
- 按键(独立按键、矩阵键盘)——附带程序
热门文章
- 网站安全狗”响应内容保护“网页错误返回页面优化功能介绍
- 软件需求包括3个不同的层次 - 业务需求、用户需求和功能需求
- 软件专业毕业生之一个月攻略
- 获取工作流活动的返回值
- java中的字符,字符串,数字之间的转换(亲测)
- Linux下创建用于并指定该用户的主目录和相关权限
- 收集的48个Shell脚本小技巧
- Java opengl openal_项目里用到了openal,特分享一下openal全教程
- 徐州技师学院计算机程序设计,徐州技师学院2021年有哪些专业
- java内存区域_JVM学习之—Java内存区域