pytorch张量高级索引介绍

PyTorch 中,张量索引操作可以使用高级索引(advanced indexing),其中索引可以是另一个张量。使用这种索引方式时,返回值的维度由索引张量的形状和原始张量的形状共同决定。以下是具体的规则和解释:

1. 基本概念

假设我们有一个张量 x 和索引张量 indices,我们通过 x[indices] 进行高级索引操作。

规则:

  • 索引张量的形状将决定返回值的形状。
  • 返回值的维度由索引张量的维度代替索引位置后的张量维度。

2. 示例讲解

示例 1:一维索引

复制代码
x = torch.tensor([[10, 20, 30], [40, 50, 60]])
indices = torch.tensor([0, 1])
result = x[indices]
  • x 的形状是 (2, 3)
  • indices 是一维张量,形状是 (2,)
  • 索引 x[indices] 的结果:
    • 取出 x 的第 0 行和第 1 行。
    • 返回值的形状是 (2, 3)

示例 2:多维索引

复制代码
x = torch.tensor([[10, 20, 30], [40, 50, 60]])
indices = torch.tensor([[0, 1], [1, 0]])
result = x[indices]

print(f"x.shape:{x.shape}")
print(f"index.shape:{index.shape}")
print(f"result.shape:{result.shape}")
print(result)

输出:

复制代码
x.shape:torch.Size([2, 3])
index.shape:torch.Size([2, 2])
result.shape:torch.Size([2, 2, 3])
tensor([[[10, 20, 30],
         [40, 50, 60]],

        [[40, 50, 60],
         [10, 20, 30]]])

示例 3:多维组合索引

复制代码
x = torch.tensor([[10, 20, 30], [40, 50, 60]])
rows = torch.tensor([0, 1])
cols = torch.tensor([1, 2])
result = x[rows, cols]
  • x 的形状是 (2, 3)
  • rowscols 都是一维张量,形状为 (2,)
  • 索引 x[rows, cols]
    • 分别取出 x[0, 1]x[1, 2]
    • 返回值是 (20, 60),形状为 (2,)

示例 4:广播索引

复制代码
x = torch.tensor([[10, 20, 30], [40, 50, 60]])
rows = torch.tensor([[0], [1]])
cols = torch.tensor([0, 2])
result = x[rows, cols]
  • x 的形状是 (2, 3)
  • rows 的形状是 (2, 1)cols 的形状是 (2,)
  • 索引 x[rows, cols]
    • rowscols 会广播成 (2, 2)
    • 返回值的形状是 (2, 2)

示例 5:更复杂的张量索引操作

AF3 AtomAttentionEncoder类的init_pair_repr方法解读-CSDN博客中的 张量的高级索引

总结:

  • 索引张量的形状直接决定了返回张量的形状。
  • 当多个索引张量时,它们会广播以匹配维度,然后返回广播后形状的张量。
相关推荐
天国梦4 分钟前
读后续写批改难题怎么破?天学网AI批改工具实测解析
人工智能
金銀銅鐵6 分钟前
斐波那契数列的个位数出现的周期是多少?
python·数学
阿里云云原生17 分钟前
OpenTelemetry eBPF 在 AI 场景的应用:配置 ack-onepilot 实现 LLM 调用链追踪
人工智能·阿里云·云监控
sel_918 分钟前
【多轮对话论文导读(三)】多轮对话与Agent论文阅读笔记:用户模拟、轨迹生成与长期记忆
论文阅读·人工智能·笔记·深度学习·算法·机器学习
玫瑰互动GEO18 分钟前
从工程视角拆解海外ClaudeGEO关键词优化:如何拿到AI搜索引用席位,获得B端采购选择
人工智能
数据库小学妹24 分钟前
AI Agent记忆怎么存?Redis+向量库三层记忆架构实战
人工智能·架构·向量数据库·ai数据库·数据库趋势·ai agent记忆
HySpark29 分钟前
从 VAD、声纹嵌入到聚类优化的一套解决思路
人工智能·语音识别·熙瑾会悟
YOLO数据集集合38 分钟前
垃圾目标检测数据集 |垃圾检测 智慧环卫 城市管理 生活垃圾堆检测 生活垃圾 垃圾场 9023期
人工智能·目标检测·视觉检测·生活·垃圾检测·垃圾
cxr8281 小时前
混沌背后的秩序:T-Π-O 框架与复杂系统理解的认识论重构
人工智能·认知框架
sramdram1 小时前
语音识别芯片类别有哪些?离线语音识别芯片交互方案分析
人工智能·交互·语音识别·语音识别芯片·离线语音识别芯片