pytorch张量列表索引和多维度张量索引比较

pytorch张量的高级索引取值原理解读

代码:

复制代码
import torch
x = torch.tensor([[10, 20, 30], [40, 50, 60]])
x1 = x[[[0, 1], [1, 0]]]
x2 = x[torch.tensor([[0, 1], [1, 0]])]
print(f"x1:{x1}")
print(f"x2:{x2}")

输出:

复制代码
x1:tensor([20, 40])
x2:tensor([[[10, 20, 30],
         [40, 50, 60]],

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

代码解读:

**张量 x**是一个 2x3 的张量:

x1 的取值

复制代码
x1 = x[[[0, 1], [1, 0]]]
  • 索引机制 : 这里的索引 [[0, 1], [1, 0]]高级整数索引

    • 它取的是第 1 维的具体位置。
  • 步骤

    • x[[0, 1], [1, 0]] 等价于以下操作:
      • x[0, 1] -> 20
      • x[1, 0] -> 40

因此:

复制代码
x1 = [20, 40]

注:x[[[0, 1], [1, 0]]] 结果同 x[[0, 1], [1, 0]]

x2 的取值

复制代码
x2 = x[torch.tensor([[0, 1], [1, 0]])]

### 复杂索引,在0维和1维度都取
#x3 = x[torch.tensor([[0, 1], [1, 0]]),torch.tensor([[0, 1], [1, 0]])]
#print(f"x3:{x3}")

#x 3:tensor([[10, 50],
#        [50, 10]])

#print(f"x3.shape:{x3.shape}")   # x3.shape:torch.Size([2, 2])
  • 索引机制 : 这里的索引 torch.tensor([[0, 1], [1, 0]])多维整形张量索引

    • 这种索引会在第 0 维上按张量的形状进行广播
  • 广播行为

    • 索引张量的形状是 (2, 2)
    • PyTorch 会沿第 0 维取出对应的行,并按照索引结果重新排列。
  • 步骤

    • x[0] -> [10, 20, 30]
    • x[1] -> [40, 50, 60]

    根据索引张量 [[0, 1], [1, 0]],结果排列为:

    [[[10, 20, 30], # 对应索引 (0, 0)
    [40, 50, 60]], # 对应索引 (0, 1)

    [[40, 50, 60], # 对应索引 (1, 0)
    [10, 20, 30]]] # 对应索引 (1, 1)

总结:

  • x1 使用的是高级整数索引,按指定的具体位置取值(减少维度)。
  • x2 使用的是多维张量索引,按张量形状广播,生成一个更高维的结果(不减少维度)。
相关推荐
Lab_AI3 分钟前
山东兴文携手创腾科技打造数智化研发新标杆!电子实验记录本ELN在精细化工领域再添标杆用户
人工智能·数字化转型·企业数据管理·数智化转型·电子实验记录本
Henry-SAP5 分钟前
SAP MRP PIR消耗机制解析
人工智能·sap·erp
byte轻骑兵6 分钟前
【HFP】规范精讲[23]: 蓝牙超宽频语音革命——LC3-SWB编码深度解析,重塑无线通话体验
人工智能·语音识别·蓝牙·hfp·通话
jimmyleeee12 分钟前
人工智能基础知识笔记三十九:几个Skills的网站
人工智能·笔记·chatgpt
前端不太难16 分钟前
从 OpenClaw 到端侧 AI:低算力智能体架构设计
人工智能·状态模式
callJJ20 分钟前
Spring AI ETL 数据处理管道实战指南:从原始文档到向量索引
java·人工智能·spring·ai·etl·spring ai
志栋智能25 分钟前
当巡检遇上超自动化:一场运维质量的系统性升级
运维·服务器·网络·数据库·人工智能·机器学习·自动化
有个人神神叨叨28 分钟前
Anthropic Managed Agents 详细介绍
人工智能
跨境卫士—小依30 分钟前
平台流量分发机制变化跨境卖家如何重新获取曝光
大数据·人工智能·跨境电商·亚马逊·营销策略
阿杰学AI30 分钟前
AI核心知识120—大语言模型之 基于人类反馈的强化学习 (简洁且通俗易懂版)
人工智能·ai·语言模型·自然语言处理·aigc·rlhf·基于人类反馈的强化学习