PyTorch中使用Tensor作为索引
一维Tensor作为索引
在Numpy中,我们可以传入数组作为索引,称为花式索引。这里只演示使用两个一维List的例子。
In[42]: a=np.arange(18).reshape(6,3)
In[43]: a
Out[43]:
array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11],[12, 13, 14],[15, 16, 17]])
In[44]: a[[1,2,3],[0,1,2]]
Out[44]: array([ 3, 7, 11]) # 相当于选择了下标分别为[1,0], [2,1], [3,2]的元素
而在PyTorch中,如果使用两个整数List/一维Tensor作为索引,所起的作用是相同的。
In[45]: w=torch.arange(18).view(6,3)
IN[46]: w
Out[46]:
tensor([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11],[12, 13, 14],[15, 16, 17]])
In[47]: w[[1,2,3],[0,1,2]]
Out[47]: tensor([ 3, 7, 11])
In[48]: w[torch.tensor([1,2,3]),torch.tensor([0,1,2])]
Out[48]: tensor([ 3, 7, 11])
二维Tensor作为索引
下面的例子使用了二维Tensor作为索引,注意把[[1,2,3],[0,1,2]]
和上一小节的两个一维Tensor[1,2,3],[0,1,2]
区分开。通过下面的例子可以发现,二维Tensor作为索引时,每个索引中的元素都作为w的第一维度的下标(即行号)用于选择w中第一维的元素。例如二维索引[[1,2,3],[0,1,2]]
中的3
选出了w的第四行[ 9, 10, 11]
。 下面例子中,索引形状为[2,3],将索引中的每个元素用被索引的Tensor中对应行号的行替换之后,由于每一行有三列,故得到了[2,3,3]的结果
In[56]: w
Out[56]:
tensor([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11],[12, 13, 14],[15, 16, 17]])
In[57]: w[torch.LongTensor([[1,2,3],[0,1,2]])]
Out[57]:
tensor([[[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]],[[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8]]])
使用Tensor作为List的索引
当Tensor仅含有一个整数时,可以作为List的索引,相当于取出该整数作为索引。若含有多个整数,则报错。
In [1]: import torchIn [2]: a=[x for x in range(10)]In [3]: a
Out[3]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]In [4]: a[torch.tensor([[1]])] # 相当于a[1]
Out[4]: 1In [5]: a[torch.tensor([[[5]]])] # 相当于a[5]
Out[5]: 5In [6]: a[torch.tensor([[1,2]])] # 多于1个整数,报错
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-6-ec87609b9152> in <module>()
----> 1 a[torch.tensor([[1,2]])]TypeError: only integer tensors of a single element can be converted to an index
PyTorch中使用Tensor作为索引相关推荐
- 实践教程 | 浅谈 PyTorch 中的 tensor 及使用
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者 | xiaopl@知乎(已授权) 来源 | https://z ...
- 【深度学习理论】一文搞透pytorch中的tensor、autograd、反向传播和计算图
转载:https://zhuanlan.zhihu.com/p/145353262 前言 本文的主要目标: 一遍搞懂反向传播的底层原理,以及其在深度学习框架pytorch中的实现机制.当然一遍搞不定两 ...
- Python数据类型、Numpy数据类型和Pytorch中的tensor类型间的相互转化
数据类型包括Python数据类型.Numpy数据类型和Pytorch中的tensor,Pytorch中的tensor又包括CPU上的数据类型和GPU上的数据类型. 一.Python数据类型 Pytho ...
- pytorch中谜一样的索引赋值法
test import torch nums = 3 # 首先,我们随机生成一个3*5的矩阵 a = torch.randn(nums, 5) # 在列的维度(dim=0),取每列的最大值 overl ...
- pytorch 中的Tensor.detach介绍
detach的作用 Tensor.detach() 的作用是阻断反向梯度传播,当我们再训练网络的时候可能希望保持一部分的网络参数不变,只对其中一部分的参数进行调整:或者值训练部分分支网络,并不让其梯度 ...
- pyTorch中tensor运算
文章目录 PyTorch的简介 PyTorch中主要的包 PyTorch的安装 使用GPU的原因 使数据在GPU上运行 什么使Tensor(张量) 一些术语介绍 Tensor的属性介绍(Rank,ax ...
- pytorch中tensor、backward一些总结
目录 说明 Tensor Tensor的创建 Tensor(张量)基本数据类型与常用属性 Tensor的自动微分 设置不可积分计算 pytorch 计算图 backward一些细节 该文章解决问题如下 ...
- pytorch中的卷积操作详解
首先说下pytorch中的Tensor通道排列顺序是:[batch, channel, height, width] 我们常用的卷积(Conv2d)在pytorch中对应的函数是: torch.nn. ...
- [PyTorch] 深度学习框架PyTorch中的概念和函数
Pytorch的概念 Pytorch最重要的概念是tensor,意为"张量". Variable是能够构建计算图的 tensor(对 tensor 的封装).借用Variable才 ...
最新文章
- 对实体 useSSL 的引用必须以 ';' 分隔符结尾。
- replace into mysql去重_上传 phpexcel 类 入库并入库前去重
- 纪中B组模拟赛总结(2020.2.13)
- [vue] 说说你对Object.defineProperty的理解
- c# contains_清单 .Contains()方法,以C#为例
- 纵览轻量化卷积神经网络:SqueezeNet、MobileNet、ShuffleNet、Xception
- 21 年前濒临倒闭的苹果是如何做到今天万亿市值的?
- Spring-core源码 -- AlternativeJdkIdGenerator Spring的UUID生成器类
- RUBY发送验证码通知短信(互亿无线)
- qq群发 java_qq聊天机器人 群发工具 (java版) (三)
- 如何将 Excel 数据分组后按次序横向排列
- 安徽农业大学计算机考研分数线,安徽农业大学历年考研分数线汇总[2012-2021]
- 赛福基因公开课第二节《神经系统遗传病基因检测简介》
- 第九周课堂作业 包括建表 进行各种查询
- FT2004(D2000)开发实战之W25X10CL固件烧写
- 数字资产支付行业研究报告 | TokenInsight
- element的事件想要传输额外的参数
- 光E电做好个人理财规划理财如此简单
- 研发思维08----嵌入式智能产品数据服务后端分析
- ArrayList.add方法底层浅析
热门文章
- php项目开发经验-2个月学习php经历
- Segmented Buttons
- cube 设置滴答定时器_stm32cubemx生成的代码总是进入滴答定时器中断
- android解压缩工具下载,ZArchiver解压缩工具
- elasticsearch aggregations 之一:引入buckets、metrics
- Liunx创建新用户登录异常:/usr/bin/xauth: error/timeout in locking authority file /home/liuqidong/.Xauthority
- html中list-style-type与list-style的区别
- 【007】工信部第一份关于操作系统实时性的测评报告
- WIN下免费pdf转图片PNG/JPG/TIFF软件,poppler和pdftocairo开源库编译,中文文件名出错修正
- Charles设置断点