PyTorch基础(23)-- Tensor.scatter_()方法

一、前言

本次要介绍的函数为Tensor.scatter_函数,也是PyTorch中常用的函数之一,但遗憾的是,我想在网络上查询该函数的用法时,大部分的文章都是直接给出一个示例,看完之后,其中的原理我还是无法理解,因此,秉着靠别人不如靠自己的原则,决定自己彻底弄明白!话不多说,Let’s go!🫵希望能够对你有所帮助🫵!

二、方法解析

在这里插入图片描述
首先,要明白的是:scatter_函数是在做怎样的事情?实际上,scatter_函数是一个填值操作。假设有一个元素全为0的tensor A,有一个tensor B,还有一个索引tensor C,当执行 A.scatter_(dim, index=C, src=B) 时,实际上是将B按照C的规则,将B中对应位置的值赋值给A对应位置元素。

嗯……解释了一通,貌似还是有点绕,没关系,现在你只要知道scatter_函数的作用就是给A赋值就完事了!接下来,通过大量的案例彻底弄明白***scatter_***函数到底在干什么!

三、案例分析

3.1 tensor.shape=2D

  • dim = 0
import torch
# 创建一个tensor, name为score
score = torch.arange(1,12).reshape((3,4))
# 创建一个元素全为0的tensor, name为mask
mask = torch.zeros(scroe.shape, dtype=score.dtype)
# 创建一个tensor, name为index
index = torch.tensor([[0,1,2,1]])
# 给mask赋值
mask.scatter_(dim=0, index=index, src=score)
# print mask
print(mask) 

在这里插入图片描述


👋👋👋👋👋👋👋重要!接下来,详细介绍一下scatter_的工作原理!👋👋👋👋👋👋👋

案例为tensor的维度为2D,dim=0的场景。
当我们执行***mask.scatter_(dim=0, index=index, src=score)***这行代码时,流程如下:
在这里插入图片描述
可以发现,当dim=0时,第2维度的值是不会发生变化的;同理,当dim=1时,第1维度的值是不会发生变化的!


  • dim=1
import torch
# 创建一个tensor, name为score
score = torch.arange(1,12).reshape((3,4))
# 创建一个元素全为0的tensor, name为mask
mask = torch.zeros(scroe.shape, dtype=score.dtype)
# 创建一个tensor, name为index
index = torch.tensor([[0,1,2,1]])
# 给mask赋值
mask.scatter_(dim=1, index=index, src=score)
# print mask
print(mask) 

在这里插入图片描述

参考文献

[1] https://pytorch.org/docs/stable/generated/torch.Tensor.scatter_.html#torch.Tensor.scatter_

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

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

相关文章

python生成器在读取接口用例中应用解析

Python生成器Generator Python生成器(Generator)是一种特殊类型的函数,它可以通过yield语句逐步生成值。 生成器提供了一种延迟计算的方式,可以逐步产生结果,而不是一次性生成所有的值。 1、生成器原理: …

2024年【A特种设备相关管理(A4电梯)】试题及解析及A特种设备相关管理(A4电梯)模拟试题

题库来源:安全生产模拟考试一点通公众号小程序 A特种设备相关管理(A4电梯)试题及解析根据新A特种设备相关管理(A4电梯)考试大纲要求,安全生产模拟考试一点通将A特种设备相关管理(A4电梯&#x…

Mac密室逃脱游戏推荐:Escape Simulator for mac安装包

Escape Simulator 是一款逃生模拟游戏,玩家在游戏中需要寻找线索、解决谜题,以逃离各种房间或环境。这种类型的游戏通常设计有多个关卡或场景,每个场景都有不同的设计和难度。 在 Escape Simulator 中,玩家的目标通常是找到出口或…

东方韵味:红酒与茶道的很好邂逅

在古老的东方,茶道与红酒各自承载着深厚的文化底蕴和历史传承。当这两大传统文化碰撞、交融,仿佛展开了一幅绚烂多姿的画卷,既展现了东方的神秘韵味,又融入了红酒的异国风情。今天,就让我们一同探索这场红酒与茶道的很…

详解微服务应用灰度发布最佳实践

作者:子丑 本次分享是站在 DevOps 视角的灰度发布实践概述,主要内容包括以下四个方面: 第一,灰度发布要解决的问题; 第二,灰度发布的四种典型场景; 第三,如何把灰度发布融入到应…

2024年07月03日 Redis部署方式和持久化

Redis持久化方式:RDB和AOF,和混合式 RDB:周期备份模式,每隔一段时间备份一份快照文件,从主线程Fork一个备份线程出来备份,缺点是会造成数据的丢失。 AOF:日志模式,每条命令都以操作…

Java8环境安装(jdk1.8安装)详细教程

Java 8环境安装(jdk1.8安装)详细教程 Java 8(也称为JDK 1.8),是Oracle公司于2014年3月发布的一个重要的Java语言版本。这个版本自发布以来,因其众多的新特性和改进,被认为是Java语言发展历程中…

itk::ShapedNeighborhoodIterator类C2516问题

错误问题&#xff1a; 1>C:\itk\src-5.3.0\Modules\Core\Common\include\itkShapedNeighborhoodIterator.h(183,1): error C2516: itk::ShapedNeighborhoodIterator<TImage,TBoundaryCondition>::ConstIterator: is not a legal base class 1>C:\itk\src-5.3.0\Mo…

【FFmpeg】avcodec_send_frame函数

目录 1.avcodec_send_frame1.1 将输入的frame存入内部buffer&#xff08;encode_send_frame_internal&#xff09;1.1.1 frame的引用函数&#xff08;av_frame_ref &#xff09;1.1.1.1 帧属性的拷贝&#xff08;frame_copy_props&#xff09;1.1.1.2 buffer的引用函数&#xf…

Appium 使用隐式等待,无法执行代码怎么办?

简介 添加等待是为了确保自动化脚本在执行过程中与应用程序之间的同步和稳定性。 应用程序的响应时间是不确定的&#xff0c;可能存在网络延迟、加载时间、动画效果等因素。如果在执行自动化脚本时没有适当的等待机制&#xff0c;脚本可能会在应用程序还未完成相应操作或加载完…

转让5000万无区域能源公司要求和流程

国家局的公司&#xff0c;也就是无地域无区域性的公司名称。这样的公司是还可以继续注册的&#xff0c;但是想要拥有国家局无区域的名称就不是那么容易的了。总局的企业要求高&#xff0c;也是实力的体现。对字号有保护。所以有很多人都对无地域的名称一直情有独钟。现有一家名…

智能视频监控平台LntonCVS视频监控汇聚平台系统详细介绍

视频监控综合管理平台是专为大中型用户设计的安防管理软件&#xff0c;旨在实现跨区域网络化视频监控的集中管理。该平台集成了信息资源管理、设备管理、用户管理、网络管理和安全管理等多项功能&#xff0c;能够集中管理监控中心的所有视频图像&#xff0c;支持多品牌设备联网…

AI基准测评(下):视频生成、代码能力、逻辑推理,AI是否已经超越人类?

本文作者&#xff1a;王加龙&#xff0c;阿里云高级算法专家 文章推荐 AI实测&#xff5c;基于图像、语言与声音&#xff0c;人工智能是否已经超越了人类&#xff1f; 知乎AI产品“直答”正式上线&#xff01;文心一言4.0 Turbo来袭&#xff0c;可为农民提供专业指导&#x…

Fork/Join框架

什么是 Fork/Join Fork/Join 框架是 Java7 提供了的一个用于并行执行任务的框架&#xff0c; 是一个把大任务分割成若干个小任务&#xff0c;最终汇总每个小任务结果后得到大任务结果的框架。 分治 我们再通过 Fork 和 Join 这两个单词来理解下 Fork/Join 框架&#xff0c;F…

数据库设计规范(DOC文件)

1 编写目的 2 数据库策略 2.1 数据库对象长度策略 2.2 数据完整性策略 2.3 规范化设计与性能之间的权衡策略 2.4 字段类型的定义与使用策略 3 命名规范 3.1 数据库命名规则 3.2 数据库对象命名的一般原则 3.3 表空间(Tablespace)命名规则 3.4 表(Table)命名规则 3.5…

Java 虚拟机 一

运行时数据区 我们先看线程隔离的数据区 程序计数器 程序计数器&#xff08; Program Counter Register&#xff09; 是一块较小的内存空间&#xff0c; 它可以看作是当前线程所执行的字节码的行号指示器。 字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执…

提升用户体验之requestAnimationFrame实现前端动画

1)requestAnimationFrame是什么? 1.MDN官方解释 2.解析这段话&#xff1a; 1、那么浏览器重绘是指什么呢&#xff1f; ——大多数电脑的显示器刷新频率是60Hz&#xff0c;1000ms/6016.66666667ms的时间刷新一次 2、重绘之前调用指定的回调函数更新动画&#xff1f; ——requ…

六西格玛绿带培训ROI:你的投资究竟值不值?

近年来&#xff0c;企业对于员工培训的投入日益增加&#xff0c;六西格玛绿带培训更是作为提升企业运营效率和质量管理的利器&#xff0c;更是备受关注。然而&#xff0c;面对高昂的培训成本&#xff0c;企业如何评估六西格玛绿带培训的投资回报率&#xff08;ROI&#xff09;呢…

安装Intel Realsense D435i驱动与ROS包报错

1.下载安装realsense SDK 1.1 安装依赖 sudo apt install libudev-dev pkg-config libgtk-3-dev sudo apt install libusb-1.0-0-dev pkg-config sudo apt install libglfw3-dev sudo apt install libssl-dev1.2 权限 cd librealsense/ sudo cp config/99-realsense-libusb.…

一万年太久,只争朝夕 | Foundation model的进展仍不够快

编者按&#xff1a;如今根基模型&#xff08;Foundation Models&#xff09;的应用和相关创新正在快速涌现&#xff0c;但仍有很大的提升空间&#xff0c;目前还无法充分发挥根基模型的潜能、将其高效快速地应用于企业级AI应用中。 根基模型的加速应用和落地&#xff0c;带动了…