飞桨Paddle API index_add 详解
index_add¶
paddle.index_add(x, index, axis, value, name=None)[源代码]¶
沿着指定轴 axis
将 index
中指定位置的 x
与 value
相加,并写入到结果 Tensor 中的对应位置。这里 index
是一个 1-D
Tensor。除 axis
轴外,返回的 Tensor 其余维度大小和输入 x
相等, axis
维度的大小等于 index
的大小。
官方文档:index_add-API文档-PaddlePaddle深度学习平台
我们还是通过一个代码示例来学习:
x = paddle.ones([5, 3])
value = paddle.to_tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=paddle.float32)
index = paddle.to_tensor([0, 4, 2])
print(x)x = paddle.index_add(x, index, 0, value)
print(x)
输出
Tensor(shape=[5, 3], dtype=float32, place=Place(cpu), stop_gradient=True,[[1., 1., 1.],[1., 1., 1.],[1., 1., 1.],[1., 1., 1.],[1., 1., 1.]]) Tensor(shape=[5, 3], dtype=float32, place=Place(cpu), stop_gradient=True,[[2. , 3. , 4. ],[1. , 1. , 1. ],[8. , 9. , 10.],[1. , 1. , 1. ],[5. , 6. , 7. ]])
API 解析:index_add
查看前面的例子输出,可以看到,index_add就是把value的各个值,按照index里的值为索引,加入到源x里面去,比如
value = paddle.to_tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=paddle.float32)
index = paddle.to_tensor([0, 4, 2])
首先取出value[0] ,发现index[0]是 0,那么就把value[0] 跟x[0]相加
取出value[1] ,发现index[1] 是4,那么就把value[1] 跟x[4]相加
取出value[2] ,发现index[2] 是2,那么就把value[2] 跟x[2]相加
在飞桨官方没有index_add函数的时候,可以用python来实现,当然速度会慢很多:
def paddleindex_add(x, dim, index, source): # 飞桨的index_add'''
x = paddle.ones([5, 3])
t = paddle.to_tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=paddle.float32)
index = paddle.to_tensor([0, 4, 2])
# print(x)
with Benchmark("paddleindex_add"):x = paddleindex_add(x, 0, index, t)
print(x)'''for i in range(len(index)):x[index[i]] += source[i]return x
可以从赋值语句看到,就是从index里面取出值,然后x和source的相关值相加:x[index[i]] += source[i]
当然注释里面用了Benchmark函数,抄李沐老师的,源码如下
import time
class Timer: #@save"""记录多次运行时间"""def __init__(self):self.times = []self.start()def start(self):"""启动计时器"""self.tik = time.time()def stop(self):"""停止计时器并将时间记录在列表中"""self.times.append(time.time() - self.tik)return self.times[-1]def avg(self):"""返回平均时间"""return sum(self.times) / len(self.times)def sum(self):"""返回时间总和"""return sum(self.times)def cumsum(self):"""返回累计时间"""return np.array(self.times).cumsum().tolist()class Benchmark:"""用于测量运行时间"""def __init__(self, description='Done'):self.description = descriptiondef __enter__(self):self.timer = Timer()return selfdef __exit__(self, *args):print(f'{self.description}: {self.timer.stop():.4f} sec')
相关文章:
飞桨Paddle API index_add 详解
index_add paddle.index_add(x, index, axis, value, nameNone)[源代码] 沿着指定轴 axis 将 index 中指定位置的 x 与 value 相加,并写入到结果 Tensor 中的对应位置。这里 index 是一个 1-D Tensor。除 axis 轴外,返回的 Tensor 其余维度大小和输入 …...

后端代码练习1——加法计算器
1. 需求 输入两个整数,点击 “点击相加” 按钮,显示计算结果。 2.准备工作 创建Spring Boot项目,引入Spring Web依赖,把前端代码放入static目录下。 2.1 前端代码 <!DOCTYPE html> <html lang"en"> <h…...
观察者模式和MQ是什么关系
观察者模式(Observer Pattern)和MQ(Message Queue,消息队列)之间的关系主要体现在它们所实现的功能和机制上的相似性,尽管它们在技术实现和应用场景上有所不同。 观察者模式 观察者模式是一种行为型设计模…...
JDK动态代理和CGLIB动态代理案例分析
JDK动态代理和CGLIB动态代理案例分析 JDK动态代理和CGLIB动态代理的实现原理如下: JDK动态代理的实现原理: JDK动态代理是基于Java的反射机制实现的实现一个继承InvocationHandler接口的对象,重写invoke方法,invoke方法中可以在目…...

【数据结构-前缀哈希】力扣1124. 表现良好的最长时间段
给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大…...

电商平台产品ID|CDN与预渲染|前端边缘计算
技术实现 都是通过ID拿到属性,进行预渲染html,通过 oss 分发出去 详情页这种基本都是通过 ssr 渲染出来,然后上缓存 CDN 分发到边缘节点来处理,具体逻辑可以参考 淘宝——EdgeRoutine边缘计算(CDNServerless 边缘计算…...

LATTICE进阶篇DDR2--(4)DDR2 IP核总结
一、IP核的时钟框架 1片DDR2的接口是16位,且DDR2是双边沿读取的, 故当DDR2芯片的时钟为200M时,右侧DDR2芯片上的数据吞吐率为200M*2*16b,左侧数据吞吐率为200M*32b,左右两侧数据吞吐量相等。 根据上规律可知…...

windows下php安装kafka
下载zookeeper Kafka 依赖 Zookeeper 进行分布式协调,所以需要下载Zookeeper ,当然你也可以使用kafka包里自带的一个默认配置的 Zookeeper。这里我们单独下载一个 访问Zookeeper官方下载页面在页面中找到最新的稳定版本,点击相应的下载链接…...

【wiki知识库】09.欢迎页面展示(浏览量统计)SpringBoot部分
🍊 编程有易不绕弯,成长之路不孤单! 大家好,我是熊哈哈,这个项目从我接手到现在有了两个多月的时间了吧,其实本来我在七月初就做完的吧,但是六月份的时候生病了,在家里休息了一个月的…...

数据分析与应用:微信-情人节红包流向探索分析
目录 0 需求描述 1 红包发送方用户的基本信息缺失率有多高?(即有多少红包发送方用户无法在用户基本信息表中匹配? 2 哪一组红包金额的拒收率最高? 3、最受二线城市欢迎的红包金额为?(即发出次数最多) 4 北上广深 4 大城市中,哪座城市的男性用户发出的 520 红包比例…...
SQL,获取 ID 的历史状态
sas系统的表tb存储病人的医疗历史记录,当Visit_codeSurgery时表示手术,Visit_codeOffice表示咨询,每个病人有多条Visit_code,有时只有Surgery或只有Office:IdVisit_DateVisit_codeA305/15/2004SurgeryA302/5/2005Offic…...

阅文集团:摇不动的IP摇钱树
把IP当成摇钱树,要做“东方迪士尼” 今天我们聊——阅文集团 《热辣滚烫》《庆余年2》《与凤行》和《玫瑰的故事》很熟悉吧?影视“四连爆”, 阅文集团交出一份亮眼半年报,时隔两年,重启增长。 跟IP相关业务对收入贡献…...

ETL数据集成丨将SQL Server数据同步至Oracle的具体实现
一、背景 在构建企业级数据架构时,将SQL Server数据库的数据同步至数仓数据库(如Oracle)是一项至关重要的任务。这一过程不仅促进了跨系统数据的一致性与可用性,还为数据分析、商业智能以及决策支持系统提供了坚实的数据基础。 …...
20240814软考架构-------软考51-55答案解析
每日打卡题51-55答案 51、【2017年真题】 难度:一般 系统移植也是系统构建的一种实现方法,在移植工作中, 需要最终确定移植方法。 A.计划阶段 B.准备阶段 C.转换阶段 D.验证阶段 答案:A 解析: 移植工作大体上分为计划…...

JavaEE 的入门
1. 学习JavaEE Java EE(Java Platform Enterprise Edition), Java 平台企业版. 是JavaSE的扩展, ⽤于解决企业级的开 发需求, 所以也可以称之为是⼀组⽤于企业开发的Java技术标准. 所以, 学习JavaEE主要是学习Java在 企业中如何应⽤. 前⾯学习的是Java基础, JavaEE 主要学习Jav…...

vue3+ts 前端word文档下载文件时不预览直接下载方法(支持 doc / excel / ppt / pdf 等)
前端word文档下载文件时不预览直接下载方法支持 doc / excel / ppt / pdf 等 根据需要,要实现一个下载文档的需要 最简单的方法就是使用a标签 如果是相同域可以直接下载,但如果是不同域的,就会先打开一个预览页,在预览页再点下载…...

Java 空值与null 形参与实参学习
Java系列文章目录 文章目录 Java系列文章目录一、前言二、学习内容:三、问题描述四、解决方案:4.1 空值与null的区别4.1.1 空值(Empty Value)4.1.2 Null 4.2 形参与实参区别 五、总结:5.1 学习总结: 一、前…...

【QT常用技术讲解】QTableView添加QCheckBox、QPushButton
前言 QT展示列表信息的时候通常用到列表(比如用户信息、机构信息、设备信息等菜单),当需要对某列进行修改、删除操作时,就需要加入按钮(QPushButton),当需要对多列进行右键菜单操作时࿰…...

linux监控命令
在 Linux 中,有许多命令可以用于监控系统的性能和状态。以下是一些常用的监控命令及其用途: 1. top 和 htop top top 命令显示当前系统中运行的进程列表及其资源使用情况。 top htop htop 是 top 命令的增强版,提…...

SpringBoot入门笔记
本文是看黑马老师讲课视频学习笔记整理 目录 入门案例 基于IDEA联网 基于Springboot官网创建 基于阿里云创建项目 手工创建 隐藏文件 入门案例解析: parent编辑 starter 引导类 内嵌tomcat 入门案例 基于IDEA联网 RestController RequestMapping("/books&…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...

mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...