首页 > 其他分享 >Six---pytorch学习---索引与切片

Six---pytorch学习---索引与切片

时间:2022-08-13 19:35:07浏览次数:82  
标签:torch tensor 32 Six shape --- 索引 pytorch print

pytorch学习(3)

索引与切片

  • 普通索引
  • 冒号索引(切片)
  • index_select 选择特定索引
  • masked_select 选择符合条件的索引
  • take 索引

普通索引

  • index(有负索引)
import torch

a = torch.Tensor(2,3,32,32)
print(a.shape)
print(a[0].shape)
print(a[0][0].shape)
print(a[0][0][0][0].shape)
print(a[0][0][0][0])
-------------------------------------------------------
torch.Size([2, 3, 32, 32])
torch.Size([3, 32, 32])
torch.Size([32, 32])
torch.Size([])
tensor(8.4125e-16)

冒号索引(切片)

  • select first : last : step
import torch

a = torch.Tensor(2,3,32,32)
print(a[0:1,:,:,:].shape)
print(a[:,:,0:10,0:10].shape)
print(a[:,:,::2,::2].shape)
print(a[:,:,0:32:2,0:32:2].shape)
print(a[:,:,:,:].shape)
-------------------------------------------------------
torch.Size([1, 3, 32, 32])
torch.Size([2, 3, 10, 10])
torch.Size([2, 3, 16, 16])
torch.Size([2, 3, 16, 16])
torch.Size([2, 3, 32, 32])

index_select 选择特定索引

  • torch.index_select(x, 维度, torch.tensor([a,b]))
  • x代表目标张量,[a,b]代表从a到b
import torch

a = torch.linspace(0, 12, steps=12) 
#创建一个列表从0到12的浮点型
print(a)

c = a.view(3,4) #将a进行维度转换变为三行四列的二维张量

b = torch.index_select(c, 0, torch.tensor([0,2])) 
#索引张量c的1维,是行,即为索引第0行以及第2行
print(b)

d = torch.index_select(c, 1, torch.tensor([1,3])) 
#索引c的2维,是列,即为索引第1列和第3列
print(d)
-------------------------------------------------------
tensor([ 0.0000,  1.0909,  2.1818,  3.2727,  4.3636,  5.4545,  6.5455,  7.6364,
         8.7273,  9.8182, 10.9091, 12.0000])
tensor([[ 0.0000,  1.0909,  2.1818,  3.2727],
        [ 8.7273,  9.8182, 10.9091, 12.0000]])
tensor([[ 1.0909,  3.2727],
        [ 5.4545,  7.6364],
        [ 9.8182, 12.0000]])

masked_select选择符合条件的索引

  • torch.masked_select(input,mask) 根据一个布尔掩码(boolean mask)索引返回一个一维张量
  • masked_select 索引是在原来tensor的shape基础上打平,然后在打平的tensor上进行索引
  • 返回的张量不予原始张量共享内存空间
import torch

a = torch.randn(3,3) #创建一个三行三列的正态分布的矩阵
print(a)
mask = torch.eye(3, 3, dtype=torch.bool) #根据torch.eye()创建一个布尔类型的三行三列的对角矩阵
print(mask)
c = torch.masked_select(a, mask) #将张量a基于mask进行索引
print(c)
-------------------------------------------------------
tensor([[ 1.1909,  0.2912, -0.1066],
        [ 0.9496,  0.6031,  1.5957],
        [-0.2447,  0.0101,  2.4906]])
tensor([[ True, False, False],
        [False,  True, False],
        [False, False,  True]])
tensor([1.1909, 0.6031, 2.4906])

take索引

  • torch.take(input, index) take索引是在原来tensor的shape基础上打平,然后按照index在打平后的tensor上索取对应位置的元素
import torch

a = torch.randn(3,3) #创建一个三行三列的正态分布的矩阵
print(a)
c = torch.take(a, torch.tensor([0,2,4,6,8]))
print(c)
-------------------------------------------------------
tensor([[-0.0397, -0.1663,  1.0296],
        [ 1.4970,  0.6902,  0.8004],
        [ 1.8391,  0.1241,  0.4261]])
tensor([-0.0397,  1.0296,  0.6902,  1.8391,  0.4261])

标签:torch,tensor,32,Six,shape,---,索引,pytorch,print
From: https://www.cnblogs.com/311dih/p/16583850.html

相关文章

  • Eight---pytorch学习---广播机制(broadcast)
    pytorch学习(5)广播机制(broadcast)矩阵运算往往都是在两个维度相同或者相匹配(前面矩阵的列数等于后一个矩阵的行数)的矩阵之间定义的,广播机制亦是如此。在机器学习的某......
  • Nine---pytorch学习---拼接与拆分/运算统计
    ##pytorch学习(6)###拼接与拆分-cat-stack-split-chunk####cat()-连接给定维度中给定的张量序列-所有张量必须具有相同的形状(拼接维度除外)或为空-torch.ca......
  • C#并发编程-4 同步
    如果程序用到了并发技术,那就要特别留意这种情况:一段代码需要修改数据,同时其他代码需要访问同一个数据。这种情况就需要考虑同步地访问数据。如果下面三个条件都满足,就必......
  • Three---面向对象与面向过程/属性和变量/关于self/一些魔法方法的使用/继承/super方法
    python的面向对象面向对象与面向过程面向过程面向过程思想:需要实现一个功能的时候,看重的是开发的步骤和过程,每一个步骤都需要自己亲力亲为,需要自己编写代码(自己来做)......
  • AICA第6期-学习笔记汇总
    AICA第6期-学习笔记汇总AICA第六期|预科班课程1.《跨上AI的战车》2.《产业中NLP任务的技术选型与落地》3.《计算机视觉产业落地挑战与应对》4.《搭建适合企业的AI中......
  • djnago-filter用法
    django-filter用法集成drf自定义filter文件内fromdjango_filtersimportrest_frameworkasrs_filtersfrom.modelsimport*classTestFilter(rs_filters.Filter......
  • 常见docker命令(二)-容器生命周期相关
    dockerrun命令主要参数-d后台运行,返回容器id-i以交互模式运行,通常与-t连用-t为容器重新分配一个伪输入终端,通常与-i连用-P(大写)随机端口映射,容器内部端口随机映射到......
  • 常见docker命令(三)-容器操作相关
    dockerexec-在容器中执行命令以交互模式进入mynginx容器的bash控制台dockerexec-itmynginxbash以交互模式在mynginx容器中执行/test.shdockerexec-itmynginx/bin/......
  • 【SpringBoot】学习笔记-静态资源导入探究
    获取静态资源路径1    如图所示,当我们访问localhost:8080/webjars目录下面的静态资源,都会被映射到classpath:/META-INF/resources/webjars/去进行查找  ......
  • 随身wifi - debian篇
    前言开始准备工作9008模式miko刷第三方包fastboot模式debian刷机包刷入debian在base目录下运行flash.bat在debian目录下运行安装驱动......