pytorch的permute(dims) 函数的功能详解

有三块 二维矩阵 如下

把二维矩阵堆叠起来,就是三维 矩阵

这样的矩阵 从x方向看(0维)  有三块 记为3,每块从y方向看(1维)的行是3,从z方向看(2维)列也是3,故三维矩阵的尺寸就是(3,3,3)

permute(dims)是干啥的, 它是操作维度的,二维是转置,原三维不变的情况下(0,1,2),可以变(0,2,1),就是转置了

permute(dims)

  1. 参数dims用矩阵的维数代入,一般默认从0开始。即第0维,第1维等等
  2. 也可以理解为,第0块,第1块等等。当然矩阵最少是两维才能使用permute
  3. 如是两维,dims分别为是0和1
  4. 可以写成permute(0,1)这里不做任何变化,维数与之前相同
  5. 如果写成permute(1,0)得到的就是矩阵的转置
  6. 如果三维是permute(0,1,2)
  7. 0代表共有几块维度:本例中0对应着3块矩阵
  8. 1代表每一块中有多少行:本例中1对应着每块有2行
  9. 2代表每一块中有多少列:本例中2对应着每块有5列
  10. 所以是3块2行5列的三维矩阵
  11. 这些0,1,2并没有任何实际的意义,也不是数值,只是用来标识区别。有点类似于x,y,z来区分三个坐标维度,是人为规定好的
  12. 三维情况直接用下面的代码来给大家讲解
     

 举例:

>>> x2 = torch.linspace(1, 30, steps=30).view(3,2,5) #产生30个数,步长30,把这30个数组成x方向3块,每一快 y方向2个数,z方向5个数
>>> x2
tensor([[[ 1.,  2.,  3.,  4.,  5.],[ 6.,  7.,  8.,  9., 10.]],[[11., 12., 13., 14., 15.],[16., 17., 18., 19., 20.]],[[21., 22., 23., 24., 25.],[26., 27., 28., 29., 30.]]])
>>>
变化一:不改变任何参数
>>> b = x2.permute(0,1,2)   # b和x2矩阵一样
>>> b
tensor([[[ 1.,  2.,  3.,  4.,  5.],[ 6.,  7.,  8.,  9., 10.]],[[11., 12., 13., 14., 15.],[16., 17., 18., 19., 20.]],[[21., 22., 23., 24., 25.],[26., 27., 28., 29., 30.]]])
>>>

 变化二:0,1交换

>>> b1 = x2.permute(1,0,2)   仔细看看b1 与b的变化
>>> b1 
tensor([[[ 1.,  2.,  3.,  4.,  5.],[11., 12., 13., 14., 15.],[21., 22., 23., 24., 25.]],[[ 6.,  7.,  8.,  9., 10.],[16., 17., 18., 19., 20.],[26., 27., 28., 29., 30.]]])

变化二:1,2交换

>>> b2 = x2.permute(0,2,1)
>>> b2
tensor([[[ 1.,  6.],[ 2.,  7.],[ 3.,  8.],[ 4.,  9.],[ 5., 10.]],[[11., 16.],[12., 17.],[13., 18.],[14., 19.],[15., 20.]],[[21., 26.],[22., 27.],[23., 28.],[24., 29.],[25., 30.]]])
>>>

这个函数的功能 就是转置变换,元素大小和个数不变,就是矩阵的形式变化

参考:

torch中permute()函数用法_permute函数_ac不知深的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/9279.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

架构师进阶之路 - 架构优化为什么难

目录 业务迭代和技术优化难以兼顾 缺少“上帝”视角思维 系统架构腐化 缺少架构师视角 系统迭代机制 设计规范把控 最近在组织团队内的系统架构优化,总而言之就是难,至于为什么难我这边总结了以下六个方面,记录一下自己的架构师进阶之路吧。&…

2. 日志模块(上)

日志需求分析 无论对于业务系统还是中间件来说,日志都是必不可少的基础功能。完善、清晰地日志可以帮助我们观测系统运行的状态,并且快速定位问题。现在让我们站在 MyBatis 框架开发者的角度,来简单做一下日志功能的需求分析: 作…

【REST规范】JAX-RS有哪些实现

JAX-RS是JAVA EE6 引入的一个新技术。 JAX-RS即Java API for RESTful Web Services,是一个Java 编程语言的应用程序接口,支持按照表述性状态转移(REST)架构风格创建Web服务。JAX-RS使用了Java SE5引入的Java注解来简化Web服务的客…

YUV 8bit转10bit

在有些场景中,我们经常会使用到YUV 8 bit转10bit的场景。 比如YUV420p 8bit 转 P010,P010le,YUV420p10le。 首先说ffmpeg 8 bit 转 10bit. 对于ffmpeg的P010le 和P010be 分别代表小端和大端,那么它转化的时候非常简单,就是8 bit再增加 8bit&…

一篇读懂React、vue框架的生命周期函数

当涉及到前端框架时,React 和 Vue.js 是两个非常受欢迎的选择。它们都提供了强大的工具和功能,帮助开发者构建交互式的、可扩展的应用程序。在这两个框架中,生命周期函数是一个重要的概念,它们允许我们在组件的不同阶段执行特定的…

https安全传输原理:

内容来自思学堂: 信息裸奔——>对称加密——>非对称加密——>非对称和对称加密——>权威第三方机构CA数字签名

Mockito的使用案例

流水线的单元测试 代码没有覆盖到,使用的是Mockito测试框架,原来是Mockito没有正确使用 package com.hmdp;import com.hmdp.controller.BlogController; import com.hmdp.entity.Blog; import com.hmdp.service.IBlogService; import com.hmdp.service.…

Spring学习(三)(类注解和方法注解)

目录 1. 存储Bean对象 1.1 配置扫描路径 1.2 添加注解存储Bean对象 1.2.1 Controller(控制器存储) 1.2.2 Service(服务存储) 1.3 这么多注解???为什么?? 1.3.1 类注解时间的关系 1.4 方法…

J2EE自定义mvc【框架配置及功能】

目录 一、配置步骤 二、配置框架前三步 导入相应的jar 导入相应的Class 导入xml文件 三、优化基本操作(增删改) 1、基础优化 编写实体类 编写BookDao类 优化BookDao JUnit测试 2、后台优化 3、前端优化 一、配置步骤 将框架打成jar包&…

【Hello mysql】 数据库库操作

Mysql专栏:Mysql 本篇博客简介:介绍数据库的库操作 库的操作 创建数据库创建数据库案例字符集和校验规则查看系统默认字符集和校验规则查看数据库支持的字符集和校验规则 校验规则对于数据库的影响操纵数据库查看数据库显示创建语句修改数据库数据库删除…

集成运放电路计算(全)

自记: 常用运放电路计算与分析 1、运放的符号表示 2、集成运算放大器的技术指标 (1) 开环差模电压放大倍数(开环增益)大 Ao(Ad)Vo/(V-V-)107-1012倍; (2) 共模抑制比高 KCMRR100db以上; (3) 输入电阻大 ri>1MW, 有的可达100MW以上; (4) 输出电阻小 ro 几W-几十…

Leetcode-每日一题【234.回文链表】

题目 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1]输出:true 示例 2: 输入:head…