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

笔记:对多维torch进行任意维度的多“行”操作

如何取出多维torch指定维度的指定“行”

    • 从二维torch开始
      • 新建torch
      • 取出某一行
      • 取出某一列
      • 一次性取出多行
        • 取出连续的多行
        • 取出不连续的多行
      • 一次取出多列
        • 取出连续的多列
        • 取出不连续的多列
    • 考虑三维torch
      • 取出三维torch的任意两行(means 在dim=0上操作)
        • 取出连续的行
        • 取出不连续的行
      • 取出任意列
        • 取出连续的列 & 取出任意列
      • 取出任意页(dim=2)
        • 取出前n页
        • 取出任意页
    • else:取出dim=0/dim=1/dim=2的任意元素操作

从二维torch开始

新建torch

import torch# 新建一个二维 torch 
a = torch.tensor ( [[1,2,3,4],[2,3,1,5],[5,1,7,2]])
a.shapeOut[5]: torch.Size([3, 4])

取出某一行

a[1]   # 取出第1行(从0行开始)Out[6]: tensor([2, 3, 1, 5])a[1].shapeOut[28]: torch.Size([4])

取出某一列

a[:,2]   # 虽说取出的是第2列,但还是以行的形式显示Out[26]: tensor([3, 1, 7])a[:,2].shapeOut[27]: torch.Size([3])

一次性取出多行

取出连续的多行

——有多种操作方式

######## scheme 1 ##########
a[[0, 1]]  # 取出前两行
### 此时需注意,需要使用两个中括号,使用 a[0,1] 的格式取出的是 a 的第0行第1列的具体某个元素“tensor(2)”Out[7]: 
tensor([[1, 2, 3, 4],[2, 3, 1, 5]])######## scheme 2 ###########
a[[range(2)]]   # 取出前两行
### 当没有别的指示(如冒号等)时,默认对dim=0进行操作Out[8]: 
tensor([[1, 2, 3, 4],[2, 3, 1, 5]])######### scheme 3 ###########
a[range(2)]   # 也可以不使用两个中括号
Out[31]: 
tensor([[1, 2, 3, 4],[2, 3, 1, 5]])     

取出不连续的多行

如:取出第0行和第2行

a[[0,2]]Out[38]: 
tensor([[1, 2, 3, 4],[5, 1, 7, 2]])

一次取出多列

取出连续的多列

——同样拥有多种方案

############## scheme 1 ###############
a[:,range(2)]  # 取出前两列Out[31]: 
tensor([[1, 2],[2, 3],[5, 1]])############ scheme 2 #################
a[:,[0,1]]
Out[32]: 
tensor([[1, 2],[2, 3],[5, 1]])

取出不连续的多列

如取出第0列和第3列

a[:,[0,3]]Out[40]: 
tensor([[1, 4],[2, 5],[5, 2]])

考虑三维torch

# 新建一个三维torch
b = torch.tensor([ [[1, 2, 3, 7], [4, 5, 6, 9]], 
[[7, 8, 9, 2], [10, 11, 12, 3]], 
[[13, 14, 15, 4], [16, 17, 18, 6]]])b.shapeOut[10]: torch.Size([3, 2, 4])bOut[11]: 
tensor([[[ 1,  2,  3,  7],[ 4,  5,  6,  9]],[[ 7,  8,  9,  2],[10, 11, 12,  3]],[[13, 14, 15,  4],[16, 17, 18,  6]]])

此三维torch可视化如下:
在这里插入图片描述

取出三维torch的任意两行(means 在dim=0上操作)

取出连续的行

以前两行为例

b[range(2)]   # 还是使用中括号Out[12]: 
tensor([[[ 1,  2,  3,  7],[ 4,  5,  6,  9]],[[ 7,  8,  9,  2],[10, 11, 12,  3]]])b[range(2)].shapeOut[13]: torch.Size([2, 2, 4])b[range(2)] == b[[range(2)]] # 使用一个中括号还是两个中括号,都是一样的效果### 但是不能使用三个,shape 会变成 torch.Size([1,2,2,4])Out[34]: 
tensor([[[True, True, True, True],[True, True, True, True]],[[True, True, True, True],[True, True, True, True]]])

取出不连续的行

如取出第0行和第2行

b[[0,2]]Out[42]: 
tensor([[[ 1,  2,  3,  7],[ 4,  5,  6,  9]],[[13, 14, 15,  4],[16, 17, 18,  6]]])

取出任意列

取出连续的列 & 取出任意列

######### 取出中间维度(dim=1)的前一列
b[:,range(1)].shape Out[19]: torch.Size([3, 1, 4])b[:,range(1)]Out[25]: 
tensor([[[ 1,  2,  3,  7]],[[ 7,  8,  9,  2]],[[13, 14, 15,  4]]])############# 取出前两列
b[:,range(2)]   Out[43]: 
tensor([[[ 1,  2,  3,  7],[ 4,  5,  6,  9]],[[ 7,  8,  9,  2],[10, 11, 12,  3]],[[13, 14, 15,  4],[16, 17, 18,  6]]])b[:,range(2)].shapeOut[44]: torch.Size([3, 2, 4])############## 取出任意一列
b[:,1]Out[46]: 
tensor([[ 4,  5,  6,  9],[10, 11, 12,  3],[16, 17, 18,  6]])

取出任意页(dim=2)

取出前n页

##################### 取出前两页
b[:,:,range(2)]Out[47]: 
tensor([[[ 1,  2],[ 4,  5]],[[ 7,  8],[10, 11]],[[13, 14],[16, 17]]])b[:,:,range(2)].shapeOut[48]: torch.Size([3, 2, 2])

取出任意页

如取出第0页,第2页和第3页

b[:,:,[0,2,3]]Out[49]: 
tensor([[[ 1,  3,  7],[ 4,  6,  9]],[[ 7,  9,  2],[10, 12,  3]],[[13, 15,  4],[16, 18,  6]]])b[:,:,[0,2,3]].shapeOut[50]: torch.Size([3, 2, 3])

else:取出dim=0/dim=1/dim=2的任意元素操作

待补充

http://www.lryc.cn/news/63281.html

相关文章:

  • 【VSCode】1、VSCode 如何连接服务器
  • AI工具:通过智能实现工作和学习效率的革命化
  • static 和构造方法
  • 【Linux 裸机篇(八)】I.MX6U EPIT 定时器中断、定时器按键消抖
  • Web安全 XSS靶场搭建(玩转整个XSS环境.)
  • 前端开发技术——DOM(上)
  • 银河麒麟v10服务器版安装OpenDDS
  • curl方式调用电商API接口示例 详细介绍
  • Duboo介绍与入门
  • 人工智能中(Pytorch)框架下模型训练效果的提升方法
  • 树莓派CSI摄像头使用python调用opencv库函数进行运动检测识别
  • Parameters(in)、Parameters(out) and Parameters(inout)
  • jstat命令查看jvm内存情况及GC内存变化
  • java 图形化小工具Abstract Window Toolit :画笔Graphics,画布Canvas(),弹球小游戏
  • HCIA-RS实验-STP和RSTP(1)
  • Leetcodes刷题之删除链表的倒数N个结点和删除链表的中间的结点
  • Java-数据结构-并查集<二>
  • JSP网上教学资源共享系统(源代码+论文)
  • QT C++入门学习(1) QT Creator安装和使用
  • UE动画状态机的事件触发顺序测试
  • 数学建模的搜索技巧
  • 学成在线笔记+踩坑(10)——课程搜索、课程发布时同步索引库。
  • 某应用虚拟化系统远程代码执行
  • solaris-Oracle11g于linux-mysql相连
  • 大厂齐出海:字节忙种草,网易爱社交
  • 几个实用的正则表达式
  • python实战应用讲解-【numpy数组篇】常用函数(八)(附python示例代码)
  • Speech and Language Processing-之N-gram语言模型
  • 【AI】Python 安装时启用长路径支持
  • 深入理解Go语言中的接口编程【17】