PyTorch张量索引用法速查

作为数据科学家或软件工程师,你可能经常处理大型数据集和复杂的数学运算,这些运算需要高效且可扩展的计算。PyTorch 是一个流行的开源机器学习库,它通过 GPU 加速提供快速灵活的张量计算。在本文中,我们将深入研究 PyTorch 张量索引,这是一种强大的技术,可让你轻松选择和操作张量的特定元素或子集。

NSDT工具推荐Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割

1、什么是 PyTorch 张量索引?

张量索引是根据张量的位置或值选择特定元素或子集的过程。PyTorch 张量索引提供了一组丰富的索引操作,使你可以使用不同的索引方案(例如整数索引、布尔索引和高级索引)选择和修改张量元素。

在 PyTorch 中,张量是一个多维数组,可以存储不同类型和大小的数值数据。可以使用一个或多个索引对张量进行索引,这些索引指定元素沿张量每个维度的位置。索引张量将返回一个包含所选元素的新张量或具有修改元素的原始张量的视图。

1、整数索引

整数索引是张量索引的最基本形式,它允许你使用张量沿每个维度的整数位置来选择特定元素。你可以使用整数索引来选择单个元素或子张量,方法是提供与所需元素的索引相对应的整数列表。

复制代码
import torch

# create a 2D tensor of size (3, 4)
x = torch.tensor([[1, 2, 3, 4],
                  [5, 6, 7, 8],
                  [9, 10, 11, 12]])

# select the element at position (1, 2)
print(x[1, 2])   # output: tensor(7)

# select the sub-tensor of size (2, 3) starting at position (0, 1)
print(x[0:2, 1:4])   # output: tensor([[2, 3, 4], [6, 7, 8]])

2、布尔索引

布尔索引允许你根据布尔条件选择张量的特定元素。你可以使用布尔索引来选择满足特定条件的元素或屏蔽不满足条件的元素。

复制代码
# create a 1D tensor of size 5
x = torch.tensor([1, 2, 3, 4, 5])

# select the elements that are greater than 3
print(x[x > 3])   # output: tensor([4, 5])

# mask out the elements that are not even
x[x % 2 != 0] = 0
print(x)   # output: tensor([0, 2, 0, 4, 0])

3、高级索引

高级索引允许你使用整数索引、布尔索引和其他高级索引方案的组合来选择张量的特定元素。你可以使用高级索引从张量的多个维度中选择元素,或创建具有不同形状的新张量。

复制代码
import torch

# create a 3D tensor of size (2, 3, 4)
x = torch.tensor([[[1, 2, 3, 4],
                   [5, 6, 7, 8],
                   [9, 10, 11, 12]],
                  
                  [[13, 14, 15, 16],
                   [17, 18, 19, 20],
                   [21, 22, 23, 24]]])

# select the elements at positions (0, 1, 2) and (1, 2, 3)
print(x[:, (0, 1, 2), (1, 2, 3)])   # output: tensor([[ 2,  7, 12],
                                    #          [14, 19, 24]])

# create a new tensor by selecting the elements that are greater than 10
y = x[x > 10]
print(y)   # output: tensor([11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24])

4、修改张量元素

PyTorch 张量索引不仅允许你选择张量元素,还允许你就地修改它们或使用修改后的元素创建新的张量。你可以使用索引为张量元素分配新值或对选定元素应用数学运算。

复制代码
# create a 2D tensor of size (3, 3)
x = torch.tensor([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]])

# assign a new value to the element at position (1, 2)
x[1, 2] = 10
print(x)   # output: tensor([[ 1,  2,  3], [ 4,  5, 10], [ 7,  8,  9]])

# multiply the elements that are greater than 5 by 2
x[x > 5] *= 2
print(x)   # output: tensor([[ 1,  2,  3], [ 4,  5, 20], [14, 16, 18]])

5、结束语

PyTorch 张量索引是一种强大而灵活的技术,它使你能够使用不同的索引方案选择和修改张量的特定元素或子集。无论你处理的是大型数据集还是复杂的数学运算,PyTorch 张量索引都提供了一种简单而有效的方法来操作张量数据。

在本文中,我们介绍了 PyTorch 张量索引的基础知识,包括整数索引、布尔索引、高级索引和修改张量元素。通过掌握这些索引技术,你可以为数据科学和机器学习项目释放 PyTorch 的全部潜力。


原文链接:PyTorch张量索引简明指南 - BimAnt

相关推荐
AI数据标注猿4 小时前
自动驾驶数据标注:从劳动力套利到系统能力竞争
人工智能·机器学习·自动驾驶
笨鸟先飞,勤能补拙4 小时前
AI 安全的下一个 5 年:从 Agent 到 AGI 的攻防博弈
人工智能·python·安全·web安全·网络安全·github·agi
名不经传的养虾人4 小时前
从0到1:企业级AI项目迭代日记 Vol.81|工具调用前,先过一道审批门
数据库·人工智能·ai编程·ai工作流·企业ai
九硕智慧建筑一体化厂家4 小时前
直流照明|无尘风淋室照明,高均匀无频闪,适配洁净车间高频合规工况
大数据·人工智能·笔记·智慧城市
Logintern094 小时前
LangSmith如何根据id关系,在服务端把扁平列表重建为树形结构,用于页面渲染Trace视图
python
Akamai中国5 小时前
优化AI推理:针对AI工作负载的实时Node Balancers指标
人工智能·云计算·云服务
jay神5 小时前
基于深度学习的车辆识别收费管理系统(全套源码+数据集)
人工智能·深度学习·yolo·计算机视觉·分类
一点一木5 小时前
第 23 届 ChinaJoy 刚结束,我把 965 个展台做成了 3D 云展馆
前端·人工智能
月光船幽幽5 小时前
呼吸孔设计重塑系统稳定性
python·科技·算法
茨球是只猫5 小时前
A 股 AI 量化全链路系统技术拆解:分层架构、双引擎验证与低换手实盘闭环
人工智能·机器学习·架构·量化交易