首页 > 其他分享 >pytorch索引与切片

pytorch索引与切片

时间:2023-07-30 16:23:40浏览次数:41  
标签:... torch 28 shape 切片 索引 pytorch select Size

indexing

a=torch.randn(4,3,28,28)
a[0].shape
# torch.Size([3, 28, 28])

a[0,0].shape
# torch.Size([28, 28])

a[0,0,2,4]
# tensor(0.6574)

select first/last N

这个a可以看成一个图片:[batch,RBG,h,w]

a.shape
# torch.Size([4, 3, 28, 28])


a[:2].shape
# torch.Size([2, 3, 28, 28])
# 这里指的是后两张图片,这里可以是a[:2],也可以是a[:2,:,:,:],
# 如果要加上的话,需要加个:

a[:2,:1].shape
#torch.Size([2, 1, 28, 28])
#这个返回的是后两张图片的第一个RBG通道的数值

a[:2,1:,:,:].shape
#torch.Size([2, 2, 28, 28])
#这里返回的也是后两张图片的后两个RBG通道的数值

a[:2,-1:,:,:].shape
# torch.Size([2, 1, 28, 28])

image
这里需要注意两点:

  • 1 就是这里的向前索引都是从0开始的并且不包括是前闭后开的
  • 2.如果正着索引的话是比如[0,1,2],倒是索引就是[-3,-2,-1],所以这个a[:2,:-1,:,:].shape返回的就是[2,2,28,28],因为不包括最后一个所以是2

select by steps

其实只有一种通用的方式就是\(begin:end:step\),这个代表着从\([begin,end)\)隔step取一个,而这种\(begin:end\)是另step=1的写法

a[:,:,0:28:2,0:28:2].shape
# torch.Size([4, 3, 14, 14])

a[:,:,::2,::2].shape
#torch.Size([4, 3, 14, 14])

image

select by specific index

这个就是我们可以选择不同的index,比如说选择第0张图片的第0,2个RBG

a.index_select(dim,torch.tensor([,,..])).shape
这个第一个dim是维度,然后就是在dim维度上选择[,,,...]列表中的索引

a.shape
#torch.Size([4, 3, 28, 28])

a.index_select(0,torch.tensor([0,2])).shape
#torch.Size([2, 3, 28, 28])
#这个就是在选择第0和第2张图片,idm就选择0


a.index_select(1,torch.tensor([0,1])).shape
#torch.Size([4, 2, 28, 28])
#这个就是选择全部图片的第0和第1个RBG,所以返回[4,2,28,28]

a.index_select(2,torch.arange(28)).shape
#torch.Size([4, 3, 28, 28])
#这个就是第二个维度上选择所有


a.index_select(2,torch.arange(8)).shape
#torch.Size([4, 3, 8, 28])
#这个就是在第二个维度上选择前8个

image

...(任意的的维度)

这个符号只是为了方便,比如说我们a[0,:,:,::2],这里我们可以简写成a[0,...,::2],如果中间有很多冒号的话会很麻烦,所以可以用这个...来代替

a.shape
# torch.Size([4, 3, 28, 28])


a[...].shape
# torch.Size([4, 3, 28, 28])



a[0,...].shape
# torch.Size([3, 28, 28])



a[:,1,...].shape
# torch.Size([4, 28, 28])


a[...,:2].shape
# torch.Size([4, 3, 28, 2])



a[0,...,::2].shape
# torch.Size([3, 28, 14])

select by mask

这个用的比较少

.masked_select()
比如说torch.masked_select(x,x.ge(0.5))
这个就是返回x中数值大于0.5的元素

image

标签:...,torch,28,shape,切片,索引,pytorch,select,Size
From: https://www.cnblogs.com/lipu123/p/17591249.html

相关文章

  • mysql 简单进阶 ———— 多列索引[一]
    前文整理一下mysql的一些简单进阶技巧,来源于高性能mysql,但不是根据书的序列来的。正文有一个问题,那就是我们为什么要创建多列索引呢?这是要思考的一个问题。为什么创建多列索引,而不是创建多个单列索引。需要弄明白这个问题,那么就需要知道索引是如何工作的。为什么有索引这个......
  • 因子分解机介绍和PyTorch代码实现
    因子分解机(FactorizationMachines,简称FM)是一种用于解决推荐系统、回归和分类等机器学习任务的模型。它由SteffenRendle于2010年提出,是一种基于线性模型的扩展方法,能够有效地处理高维稀疏数据,并且在处理特征组合时表现出色。它是推荐系统的经典模型之一,并且模型简单、可解释性强,......
  • Mysql数据库中数据量特别大,读取特别慢,已经做了索引,怎么优化
    当MySQL数据库中的数据量特别大,读取操作变得特别慢,即使已经添加了索引,仍然需要进一步优化。下面是一些建议以及示例代码来优化这种情况:使用合适的索引:确保为频繁查询的列添加了合适的索引。可以使用EXPLAIN语句来分析查询的执行计划,检查是否正确使用了索引。示例代码:sqlCopycodeE......
  • 图注意力网络论文详解和PyTorch实现
    前言 图神经网络(gnn)是一类功能强大的神经网络,它对图结构数据进行操作。它们通过从节点的局部邻域聚合信息来学习节点表示(嵌入)。这个概念在图表示学习文献中被称为“消息传递”。本文转载自P**nHub兄弟网站作者|EbrahimPichka仅用于学术分享,若侵权请联系删除欢迎关注公......
  • PyTorch的数据类型
    python和pytorch中的类型对比:我们可以发现pytorch中每中类型后面都有一个Tensor。但是很遗憾PyTorch没有String类型。我们在做NLP的时候会遇到String类型处理的问题,我们会将string转化问数值:one-hot[0,1,0,0,....]Embeddingword2vecglove1Datatype我们需要注......
  • 基于wsl2在container中利用conda安装pytorch环境
    ###一、利用conda创建一个新的环境参考命令condacreate-nENV_NAMEpython=X.X•-nENV_NAME指定环境名称•python=X.X指定要创建的Python版本,比如python=3.6使用命令:condacreate-npytorch1.13python=3.8参考资料-Anacondaconda常用命令:从入门到精通:https://......
  • PyTorch基础知识-新手笔记
    NumPy与TensorTensor为神经网络界的NumPy,与NumPy相似。相同之处:二者均可共享内存,它们之间的转换非常方便和高效。不同之处:NumPy会把ndarray放在CPU中加速。  Tensor会把ndarray放在GPU中加速。PyTorch中的Tensor可以是零维(又称为标量或一个数)、一维、二维及多维的数组。标量(s......
  • 多层感知机——pytorch版
    importtorchfromtorchimportnnfromd2limporttorchasd2lbatch_size=256train_iter,test_iter=d2l.load_data_fashion_mnist(batch_size)num_inputs,num_outputs,num_hiddens=784,10,256w1=nn.Parameter(torch.randn(num_inputs,num_hiddens,re......
  • 线性回归模型实现——pytorch版
    importrandomimporttorchfromd2limporttorchasd2ldefsynthetic_data(w,b,num_examples):"""生成y=Xw+b+噪声"""x=torch.normal(0,1,(num_examples,len(w)))#01正态分布,num_examples个样本,len(w)列print('len是:'......
  • 苹果mac m1,m2芯片安装 pytorch和tensorflow的GPU版本
    一、下载M芯片的anaconda,并安装 二、安装GPU版本的pytorch1.安装Xcodexcode-select--install2.创建环境condacreate-ntorch-gpupython=3.11condaactivatetorch-gpu 3.打开pytorch官网复制命令,注意:在macm上,device是’mps’而不是’cuda’,mac的MPS......