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

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 使用的是多维张量索引,按张量形状广播,生成一个更高维的结果(不减少维度)。


http://www.kler.cn/a/468349.html

相关文章:

  • C# 设计模式(行为型模式):责任链模式
  • nginx学习之路-nginx配置https服务器
  • Redis两种主要的持久化方式是什么?
  • 小结:DNS,HTTP,SMTP,IMAP,FTP,Telnet,TCP,ARP,ICMP
  • react axios 优化示例
  • 《Rust权威指南》学习笔记(二)
  • ElasticSearch10-性能优化
  • 左神算法基础巩固--2
  • 深入MySQL复杂查询优化技巧
  • Nginx:性能优化
  • 【MATLAB第112期】基于MATLAB的SHAP可解释神经网络回归模型(敏感性分析方法)
  • Hadoop•FinalShell连接VMware免密登录
  • centos7搭建大数据集群环境准备--安装java和scala环境
  • Lua语言的数据结构
  • (Pytorch)torch.autograd.grad()与torch.autograd.backward()
  • 爬取数据时如何设置合适的请求频率?
  • 八大排序算法,快排的三种递归非递归实现,归并的递归非递归实现,排序算法复杂度及稳定性分析【有图解】
  • Vue3实现PDF在线预览功能
  • 解析 SQL 中的 NULL 与比较操作:NULL 值与任何值的比较会返回 UNKNOWN
  • Visual Studio C++使用笔记
  • 【数学建模笔记】评价模型-基于熵权法的TOPSIS模型
  • PyTorch通过搭建LSTM网络,对MNIST手写数字数据集进行了训练和评估,实现了对手写数字的分类功能
  • 生成模型的现状2025年的新兴趋势
  • 手机投屏到电视的3种选择:无线本地投屏,无线远程投屏,AirPlay投屏
  • 设计模式 结构型 享元模式(Flyweight Pattern)与 常见技术框架应用 解析
  • np.ndarray 是 NumPy 库中的核心数据结构