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

Pytorch 基础之张量索引

本次将介绍一下 Tensor 张量常用的索引与切片的方法:

1. index 索引

index 索引值表示相应维度值的对应索引

a = torch.rand(4, 3, 28, 28)
print(a[0].shape)             # 返回维度一的第 0 索引 tensor
print(a[0, 0].shape)          # 返回维度一 0 索引位置,维度二 0 索引位置的 tensor
print(a[0, 0, 0].shape)     # 返回维度一 0 索引,维度二 0 索引,维度三 0索引的 tensor
print(a[0, 0, 2, 4].shape)  # 返回维度一 0 索引,维度二 0 索引,维度三 2索引,维度四 4索引位置的 tensor (dim = 0)
print(a[0, 0, 2, 4])# 输出结果
torch.Size([3, 28, 28])
torch.Size([28, 28])
torch.Size([28])
torch.Size([])
tensor(0.4504)

2. select first/last N

返回前 N 个或后 N 个的 tensor

【:】表示该维度所有值;

【:2】表示从索引 0 开始到索引 2 的值,包首不包尾

【1:】表示索引 1 开始到最后

【-2:】表示倒数第二个值到最后

【…】表示一个或几个维度不变

a = torch.rand(4, 3, 28, 28)
print(a[:2].shape)    # 返回维度一索引 0 ~ 2 的 tensor,相当于 a[:2, :, :, :].shape, : 表示都选择
print(a[:2, :1, :, :].shape) # 返回维度一索引 0 ~ 2,维度二索引 0 ~ 1 的 tensor
print(a[:2, :1, :3, :4].shape) # 返回维度一索引 0 ~ 2,维度二索引 0 ~ 1,维度三索引 0 ~ 3,维度四索引 0 ~ 4 的 tensor
print(a[:2, 1:, :, :].shape) # 返回维度一索引 0 ~ 2,维度二索引 1 ~ 3 的 tensor
print(a[:2, -2:, :, :].shape) # 返回维度一索引 0 ~ 2,维度二索引 1 ~ 3 的 tensor# ---------【...】的应用 --------------
print(a[...].shape)       # 表示返回一样的 a
print(a[0, ...].shape)    # 表示返回维度一,索引 0 位置的 tensor
print(a[:, 1, ...].shape) # 表示返回维度二,索引 1 位置的 tensor
print(a[:, :, 2, ...].shape)   # 表示返回维度三,索引 2 位置的 tensor
print(a[..., 10].shape)    # 表示返回维度四,索引 10 位置的 tensor
print(a[..., :2].shape)    # 表示返回维度四,索引 0 ~2 数量的 tensor# 输出结果
torch.Size([2, 3, 28, 28])
torch.Size([2, 1, 28, 28])
torch.Size([2, 1, 3, 4])
torch.Size([2, 2, 28, 28])
torch.Size([2, 2, 28, 28])# ---------【...】的应用的输出结果 --------------
torch.Size([4, 3, 28, 28])
torch.Size([3, 28, 28])
torch.Size([4, 28, 28])
torch.Size([4, 3, 28])
torch.Size([4, 3, 28])
torch.Size([4, 3, 28, 2])

3. select by steps

按一定的间隔 steps 返回 tensor

【0:28:2】表示从索引 0 开始到 28,间隔 2 取数,所以为 14

有二个冒号,便是按一定间隔取

a = torch.rand(4, 3, 28, 28)
print(a[:, :, 0:28:2, 0:28:4].shape)#输出结果
torch.Size([4, 3, 14, 7])

4. index_select(intputTensor, dim, indexTensor)

根据输入的 inputTensor ,按指定的维度索引 dim,返回与 indexTensor 一样的 size,其它维度不变的新 tensor

a = torch.rand(4, 3, 28, 28)
b = a.index_select(2, torch.arange(8))    # 也可以 inputTensor 直接调用
c = torch.index_select(a, 2, torch.arange(8)) # 建议用这种形式,返回 a 第 3 个维度与 torch.arange(8)一样 size ,其它维度不变的新 tensor 
print(b.shape)
print(c.shape)# 输出结果
torch.Size([4, 3, 8, 28])
torch.Size([4, 3, 8, 28])

5. masked_select(intputTensor, maskTensor)

返回一个满足 maskTensor 条件的一维 tensor

a = torch.rand(3, 4)
print(a)
x = a.ge(0.5)     # 大于 0.5 的 bool 张量
print(x)
print(a.masked_select(x))    # 返回值大于 0.5 的一维张量
print(torch.masked_select(a, x))    # 和上面一样,但建议用这种形式# 输出结果
tensor([[0.0169, 0.1965, 0.7381, 0.9250],[0.8292, 0.2519, 0.1531, 0.8987],[0.1365, 0.4650, 0.4005, 0.7589]])
tensor([[False, False,  True,  True],[ True, False, False,  True],[False, False, False,  True]])
tensor([0.7381, 0.9250, 0.8292, 0.8987, 0.7589])
tensor([0.7381, 0.9250, 0.8292, 0.8987, 0.7589])

6. take(inputTensor, indexTensor)

根据一维的索引张量 indexTensor,返回一个新的一维 tensor,inputTensor 看成是一维的。

a = src = torch.tensor([[4, 3, 5],[6, 7, 8]])
print(a.size())
b = torch.tensor([0, 2, 5])   # 如 0 --> 4, 2 --> 5, 5 --> 8
c = torch.take(a, b)
print(c)
print(c.size())# 输出结果
torch.Size([2, 3])
tensor([4, 5, 8])
torch.Size([3])

总结:涉及到索引,就会存在索引越界的常见问题(如下所示),在使用的时候要注意一下。

IndexError: index 29 is out of bounds for dimension 1 with size 28

有不足之处,欢迎一起交流学习!

相关文章:

Pytorch 基础之张量索引

本次将介绍一下 Tensor 张量常用的索引与切片的方法: 1. index 索引 index 索引值表示相应维度值的对应索引 a torch.rand(4, 3, 28, 28) print(a[0].shape) # 返回维度一的第 0 索引 tensor print(a[0, 0].shape) # 返回维度一 0 索引位置…...

JVM系统优化实践(1):JVM概览

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~这是多年之前做过的学习笔记,今天再翻出来,觉得仍然是记忆犹新。「独乐乐不如众乐乐」,就拿出来分享给「众乐乐」吧。目前大多…...

优秀!19年后,它再次成为TIOBE年度编程语言

新年伊始,TIOBE发布了2022年度编程语言,C时隔19年再度登顶,成为2022年最受欢迎的编程语言。TIOBE在2003年首次统计编程语言的流行指数时,C便成为年度编程语言。2022年,C获得了最高的人气4.62%,紧随其后的是…...

剑指 Offer 26. 树的子结构

摘要 剑指 Offer 26. 树的子结构 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构),B是A的子结构, 即 A中有出现和B相同的结构和节点值。 一、子树解析 思路解析:若树B是树A的子结构,则…...

他是00年的,我们卷不过他...

现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的,工作没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天,原来这位小老弟家里条…...

C#开发的OpenRA的OpenGL创建纹理流程

C#开发的OpenRA的OpenGL创建纹理流程 由于OpenRA采用的是OpenGL来显示游戏画面, 那么它就必然采用纹理来显示了。 并且由于它是2D的游戏,所以3D的模型是没有的,只要使用纹理贴图,就可以完全实现了游戏的功能。 OpenGL的纹理要起作用,需要经过一系列的动作。 先要使用glGen…...

3D目标检测(一)—— 基于Point-Based方法的PointNet系列

3D目标检测(一)—— PointNet,PointNet,PointNeXt, PointMLP 目录 3D目标检测(一)—— PointNet,PointNet,PointNeXt, PointMLP 前言 零、网络使用算法 …...

《设计模式》策略模式

策略模式 前言 先了解一下设计模式的几种类似: 行为型设计模式(Behavioral Design Pattern)是指一组设计模式,它们关注的是对象之间的通信和协作。行为型设计模式描述了对象之间的职责分配和算法的封装,以及如何在运…...

【离散数学】1. 数理逻辑

1.数理逻辑 2. 集合论 3. 代数系统 4. 图论 离散数学:研究离散量结构及相互关系的学科 数理逻辑集合论代数系统图论 逻辑:研究推理的科学 数学方法:引进一套符号系统的方法 数理逻辑是用数学方法研究形式逻辑的科学,即使用符号化…...

Java8新特性学习

Java8新特性学习为啥使用Lambda表达式Lambda表达式的基础语法无参无返回有参无返回一个参数多参单个语句体类型推断四大内置核心函数式接口其他接口方法引用与构造器引用Stream简介什么是StreamStream操作步骤创建Stream中间操作终止操作(终端操作)归约与收集并行流…...

SPARK outputDeterministicLevel的作用--任务全部重试或者部分重试

背景 目前spark的repartition()方法是随机分配数据到下游,这会导致一个问题,有时候如果我们用repartition方法的时候,如果任务发生了重试,就有可能导致任务的数据不准确,那这个时候改怎么解决这个问题呢? …...

图数据库中的 OLTP 与 OLAP 融合实践

在一些图计算的场景下,我们会遇到同时需要处理 OLTP 和 OLAP 的问题。而本文就给了一个 OLTP 与 OLAP 融合实践的指导思路,希望给你带来一点启发。 Dag Controller 介绍 Dag Controller 是 NebulaGraph 企业版的图系统,经过反复测试无误后已…...

Shader Graph简介

使用着色器(shader)和材质(material),我们能够创造出非常多有趣的效果。除了Unity自带的shader外,还可以自己编写shader或使用其他人所编写的shader。编写shader通常需要我们了解shader编程语言的语法和相关…...

kubectl

目录 一、陈述式资源管理方法 二、基本信息查看 2.1 基本信息查看格式 2.2 查看master节点组件状态 2.3 查看命名空间 2.4 创建/查看命名空间 2.5 删除(重启)命名空间/pod 2.6 查看资源的详细信息 2.7 创建副本控制器来启动Pod 2.8 查看指定命…...

实验室设计SICOLAB第三方检测中心实验室设计

第三方检测中心实验室怎么设计?详细设计内容有哪些?功能区域有哪些?仪器有哪些?要多少面积?第三方检测中心实验室是一种独立的实验室,为客户提供各种测试和分析服务。以下是一个第三方检测中心实验室的详细…...

GPS经纬度转距离

function [pN, pE] distance_gps(lon1, lon2, lat1, lat2)d2r pi/180; % deg转radR 6371000.0; % 地球半径pN (lat2 - lat1) * d2r * R;pE (lon2 - lon1) * d2r * R * cos(lat2 * d2r); end...

7-周赛333总结

7-周赛333总结 还是只过了前两题,第三题又写了好久好久,然后也不知道错在了哪里,只过了部分题解,也许是思考不全面吧。下次也许先做第四题更好…第四题今天花了点时间 做出来了个大概 开心 :happy: 合并两个二维数组 - 求和法【…...

电子招标采购系统源码—互联网+招标采购

智慧寻源 多策略、多场景寻源,多种看板让寻源过程全程可监控,根据不同采购场景,采取不同寻源策略, 实现采购寻源线上化管控;同时支持公域和私域寻源。 询价比价 全程线上询比价,信息公开透明,可…...

SQL注入和XSS攻击

1、SQL注入 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的,我们都需要对用户输…...

js Map的使用

前言:Map数据集可以理解为加强版的对象 一、for...of 1、对象不能用于for of,因其没有部署Iterator接口;其他数据集如:数组、Map、Set、Iterator对象等都可以用for...of2、使用for...of的优势: for of的循环体中可以…...

BROADCHIP广芯 BCT0104EGD-TR QFN 转换器/电平移位器

特性 无需方向控制信号数据速率 24Mbps(推) 2Mbps(开漏) A端口1.65V至5.5V&#xff0c;B端口2.3V至5.5V(VCCA < VCCB) VCC隔离:若任一VCC接地&#xff0c;则两个端口均处于高阻抗状态 无需电源供应顺序&#xff0c;VCCA或VCCB可先斜坡上升 lOFF:支持部分断电模式操作 提供QF…...

番茄小说下载器:开源电子书工具全解析

番茄小说下载器&#xff1a;开源电子书工具全解析 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 番茄小说下载器是一款基于Rust语言开发的开源工具&#xff0c;专为解决在线小…...

tao-8k性能优化小技巧:如何提升向量化与检索速度

tao-8k性能优化小技巧&#xff1a;如何提升向量化与检索速度 1. 理解tao-8k的性能瓶颈 1.1 模型架构特点 tao-8k作为支持8192长度上下文的嵌入模型&#xff0c;其核心优势在于长文本处理能力。然而&#xff0c;这种能力也带来了独特的性能挑战&#xff1a; 计算复杂度&…...

好写作AI:本科毕业论文的“通关秘籍制造机”

对于众多本科生而言&#xff0c;撰写毕业论文就像是一场艰难的“冒险之旅”&#xff0c;从选题时的迷茫&#xff0c;到内容创作的绞尽脑汁&#xff0c;再到格式调整的繁琐&#xff0c;每一步都充满挑战。不过别担心&#xff0c;好写作AI&#xff08;官网&#xff1a;https://ww…...

Phi-4-mini-reasoning实用刚需:3.8B模型在边缘服务器部署可行性分析

Phi-4-mini-reasoning实用刚需&#xff1a;3.8B模型在边缘服务器部署可行性分析 1. 模型概述与核心优势 Phi-4-mini-reasoning是微软推出的3.8B参数轻量级开源模型&#xff0c;专为数学推理、逻辑推导和多步解题等强逻辑任务设计。这个模型最突出的特点是"小参数、强推理…...

短视频 SEO 关键词优化有哪些注意事项

短视频 SEO 关键词优化有哪些注意事项 在当今数字化时代&#xff0c;短视频平台已经成为了信息传播和内容分享的重要渠道。无论你是个人创作者还是品牌运营者&#xff0c;短视频的流量和曝光度都是关键。在这个竞争激烈的环境中&#xff0c;如何有效地进行短视频 SEO 关键词优…...

解锁5大核心能力:BetterJoy让Switch手柄在PC实现专业级控制

解锁5大核心能力&#xff1a;BetterJoy让Switch手柄在PC实现专业级控制 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode…...

Adobe-GenP 3.0:如何一键解锁Adobe全家桶的终极指南

Adobe-GenP 3.0&#xff1a;如何一键解锁Adobe全家桶的终极指南 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 你是否曾梦想免费使用Photoshop、Premiere Pro等专业…...

OWL ADVENTURE视觉模型应用场景:用像素风AI助手做图片内容分析

OWL ADVENTURE视觉模型应用场景&#xff1a;用像素风AI助手做图片内容分析 1. 引言&#xff1a;当AI视觉遇上像素艺术 想象一下&#xff0c;你正在玩一款复古像素风格的RPG游戏&#xff0c;突然遇到一个神秘的NPC角色——它不是普通的游戏角色&#xff0c;而是一个能看懂图片…...

单克隆抗体如何被制备并应用于疾病治疗?

一、什么是单克隆抗体&#xff1f;其与多克隆抗体有何区别&#xff1f;单克隆抗体&#xff08;Monoclonal Antibody&#xff0c;mAb&#xff09;是指由单一B淋巴细胞克隆所产生的高度均一、仅针对某一特定抗原表位进行识别的抗体。这类抗体具有高度特异性。与之相对的是多克隆抗…...