当前位置: 首页 > news >正文

torch.gather

torch.gather

介绍

torch.gather(input, dim, index, *, sparse_grad=False, out=None) → Tensor
沿由 dim 指定的轴收集值。

对于三维张量,输出按如下方式确定:

out[i][j][k] = input[index[i][j][k]][j][k]  # 如果 dim == 0  
out[i][j][k] = input[i][index[i][j][k]][k]  # 如果 dim == 1  
out[i][j][k] = input[i][j][index[i][j][k]]  # 如果 dim == 2  

input 和 index 必须具有相同的维度数。同时要求对于所有不等于 dim 的维度 d,满足 index.size(d) <= input.size(d)。输出的形状将与 index 相同。注意 input 和 index 不会相互广播。

参数

  • input (Tensor) – 源张量

  • dim (int) – 进行索引的轴

  • index (LongTensor) – 要收集的元素的索引

关键字参数

  • sparse_grad (bool, 可选) – 如果为 True,则关于 input 的梯度将是一个稀疏张量。

  • out (Tensor, 可选) – 目标张量

示例:

t = torch.tensor([[1, 2], [3, 4]])  
torch.gather(t, 1, torch.tensor([[0, 0], [1, 0]]))  
tensor([[ 1,  1],  [ 4,  3]])

举例

其实torch文档给的形式非常清晰,只是一上来可能不太好理解
假如input是一个shape=[2,2]的矩阵,此时dim只能等于0或者1,index的shape也只能大于或者等于[2,2]

input=torch.tensor([[1,2][3,4]])
index = torch.tensor([[0, 1], [1, 2]])output = torch.gather(input,dim=0,index)
output[[],[]]

上面dim=0表示 output[i][j] = t[ index[i][j] ][ j ]意思新的output矩阵行索引取值input矩阵的行索引,列索引取index矩阵中的元素值
所以取值如下

[[input[0,0],input[0,1]],[input[1,1],input[1,2]]
]
[1,23,4
]

总结

将index矩阵中的元素当成对input取值的行索引或者列索引,同时注意index矩阵中的元素值不能超过input的行或者列大小, 比如dim=0,那么index中元素值不能超过input的列大小2,否则就会报错


文章转载自:

http://KDFoFB92.mnsts.cn
http://gpyB6Oj3.mnsts.cn
http://VQ2QcdXO.mnsts.cn
http://1oZOFMf6.mnsts.cn
http://aIzPHk1D.mnsts.cn
http://xzbk2l4J.mnsts.cn
http://DPTFRGNR.mnsts.cn
http://gmIBPBzz.mnsts.cn
http://MGMBejqq.mnsts.cn
http://QHuQSVVB.mnsts.cn
http://LESWCnK6.mnsts.cn
http://A84q03j1.mnsts.cn
http://qlTkGTdn.mnsts.cn
http://TBknGxVS.mnsts.cn
http://YyZm9ktr.mnsts.cn
http://Xeqreae3.mnsts.cn
http://jccH0LHt.mnsts.cn
http://gHehegX7.mnsts.cn
http://p8dHQxoL.mnsts.cn
http://TRIjHERC.mnsts.cn
http://3OKEykgt.mnsts.cn
http://qZoO6awl.mnsts.cn
http://uNqDewJs.mnsts.cn
http://zHnZf8Pd.mnsts.cn
http://45w2GlL4.mnsts.cn
http://ew62s7sv.mnsts.cn
http://pA488EKO.mnsts.cn
http://2c3ux1Y7.mnsts.cn
http://tb3SCr7a.mnsts.cn
http://CFD51aOx.mnsts.cn
http://www.dtcms.com/a/386211.html

相关文章:

  • 自学嵌入式第四十二天:单片机-定时器和UART串口
  • 大数据毕业设计选题推荐-基于大数据的旅游网站用户行为数据分析系统-Hadoop-Spark-数据可视化-BigData
  • 深入浅出数据结构:队列(Queue)—— 生活中的排队艺术
  • spring通过Spring Integration实现udp通信
  • Linux内存管理章节十八:内核开发者的武器库:内存分配API实战指南
  • CAD如何输出PDF多页文件
  • 我对 WPF 动摇时的选择:.NET Framework 4.6.2+WPF+Islands+UWP+CompostionApi
  • 1.整流-滤波电路的缺点和PFC的引入
  • QT 项目 线程信号切换 举例
  • 构网型5MW中压储能变流升压一体机技术方案
  • 【数据工程】8. SQL 入门教程
  • C++---前向声明
  • 在Qt项目中使用QtConcurrent::run,实现异步等待和同步调用
  • 经验分享只靠口头传递会带来哪些问题
  • Linux底层-内核数据接口:/proc
  • PEFT+DeepSpeed 1 (微调 分布式 显存优化)
  • Spring Boot 下 Druid 连接池:多维度优化打造卓越性能
  • 提升学术研究能力:从开题构思难题到AI辅助提纲生成
  • spring-kafka的消息拦截器RecordInterceptor
  • VSCode + Python 开发踩坑:虚拟环境不在项目根目录导致包无法识别该怎么办
  • 【MCP】【FastMCP】[特殊字符] 使用 UV 创建 FastMCP 服务完整示例
  • 蓝绿部署(Blue-Green Deployment)介绍(一种用于降低软件发布风险的部署策略)流量切换(金丝雀发布)
  • 羽毛球地板:从专业运动场景到全民健身市场的技术跃迁与产业重构
  • 【实战】预警算法--噪声添加机制
  • Three.js 中如何给 3D 模型添加文字标签?
  • 贪心算法应用:NFV功能部署问题详解
  • 第八章:Jmeter 非GUl命令详解
  • 知识点17:多Agent系统架构设计模式
  • 作为学术工作者,利用沁言学术提升效率:集成化与一站式体验
  • Linux网络设备驱动—netlink