torch中permute()函数用法补充内容(矩阵维度变化详细过程)
目录
- 一、前言
- 二、举例解释
- 解释部分
- 1、permute(0,1,2)
- 2、permute(0,1,2) ⇒ permute(0,2,1)
- 3、permute(0,2,1) ⇒ permute(1,0,2)
- 4、permute(1,0,2) ⇒ permute(0,2,1)
- 三、写在最后
一、前言
之前写了篇torch中permute()函数用法文章,没想到收藏和点赞还挺多的
那我就在详细的说一下permute函数里维度变化的详细过程
非常感谢@m0_46225327对本文案例更加细节补充
注意:
本文是这篇torch中permute()函数用法文章的补充内容
如果有精力可以把这篇文章阅读一下,能够更好的理解函数的维度变化过程
以及加深对输出结果的印象
二、举例解释
这里以比较经典的变化四做例子
先回顾一下变化四的内容:
————————————————分割线——————————————
变化四:0与2交换
b = x.permute(2,1,0) # 交换块和列
print(b)
print(b.size())
此时参数0对应的3块经过permute已经变成了5块
参数2对应的5列已经变成了3列
————————————————分割线——————————————
解释部分
变化四中permute参数把(0,1,2)交换成了(2,1,0)
直观上看是直接把0和2两个位置直接交换
实际上两个参数交换包括了以下部分
维度变换重点
维度数值变换:(3,2,5)==>(3,5,2)==>(5,3,2)==>(5,2,3)
# 读者一定要考虑清楚下一行代表什么意思
函数中参数变换(0,1,2)==>(0,2,1)==>(1,0,2)==>(0,2,1)
# 第一个"==>" 变化为2和5交换,对应函数里的参数0不动,1和2交换 ,变换完后为(0,2,1),对应维度是(3,5,2)。重排序为(0,1,2)
# 第二个"==>" 变化为3和5交换,对应函数里的参数2不动,0和1交换,变换完后为(1,0,2),对应维度是(5,3,2)。重排序为(0,1,2)
# 第三个"==>" 变化为3和2交换,对应函数里的参数0不动,1和2交换,变换完后为(0,2,1),对应维度是(5,2,3)。重排序为(0,1,2)
或者看表格更容易理解些?
维度变换过程 | 维度数值变换 | 函数参数变换 |
---|---|---|
(3,2,5) | - | (0,1,2) |
(3,5,2) | 2和5 | (0,1,2)==> (0,2,1) |
(5,3,2) | 3和5 | (0,1,2)==>(1,0,2) |
(5,2,3) | 3和2 | (0,1,2)==>(0,2,1) |
这里先给大家把代码放上来
便于大家验证理解
也可以先跳过代码部分直接看图片解释
import torchx = torch.linspace(1,30,steps=30).view(3,2,5)
print('x:',x)
print(x.size())# permute(0,1,2)==>permute(2,1,0)
# (3,2,5)==>(3,5,2)==>(5,3,2)==>(5,2,3)
#
# (0,1,2)==>(0,2,1)==>(1,0,2)==>(0,2,1)b1 = x.permute(0,2,1)
print('b1:',b1)
print(b1.size())b2 = b1.permute(2,0,1)
print('b2:',b2)
print(b2.size())b = b2.permute(2,1,0)
print('b:',b)
print(b1.size())
1、permute(0,1,2)
这部分就是(3,2,5)矩阵中原有的样子
2、permute(0,1,2) ⇒ permute(0,2,1)
这部分是把3块中的每一块矩阵进行转置操作,即行和列的交换
2行3列==>3行2列
3、permute(0,2,1) ⇒ permute(1,0,2)
这部分是列不动,把块和行交换
把第一块的五行分别写入变换后的五块中第一行
把第二块的五行分别写入变换后的五块中第二行
把第三块的五行分别写入变换后的五块中第三行
4、permute(1,0,2) ⇒ permute(0,2,1)
最后行列交换,即转置
三、写在最后
如果大家看起来还是比较难理解些
建议可以手写一下这个转换例子,真的一下就懂了
以下是我手写矩阵转化过程
torch中permute()函数用法补充内容(矩阵维度变化详细过程)相关推荐
- php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?
foreach的使用方法小编不是很明确,分享达人指教一下.foreach (array_expressforeach($array as $key) { if(xxxx) { break; //bre ...
- Matlab中repmat、permute函数用法
repmat函数用法 复制和平铺矩阵 函数repmat 格式: B = repmat(A, m, n) %将矩阵A复制m*n块,即B由m*n块A平铺而成 B = repmat(A, [m n])%与 ...
- python中permute_PyTorch中permute的用法详解
PyTorch中permute的用法详解 permute(dims) 将tensor的维度换位. 参数:参数是一系列的整数,代表原来张量的维度.比如三维就有0,1,2这些dimension. 例: i ...
- c++ memset 语言_C++中memset函数用法详解
本文实例讲述了C++中memset函数用法.分享给大家供大家参考,具体如下: 功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定,这个函数通常 ...
- MATLAB中repmat函数用法
1.语法 · 函数repmat B = repmat(A, m, n) %将矩阵A复制m*n块,即B由m*n块A平铺而成 B = repmat(A, [mn])%与上面一致 B = repmat(A, ...
- matlab stem函数坐标轴_MATLAB中stem函数用法
stem(Y) 将数据序列Y从x轴到数据值按照茎状形式画出,以圆圈终止.如果Y是一个矩阵,则将其每一列按照分隔方式画出. stem(X,Y)在X的指定点处画出数据序列Y. stem(...,'fil ...
- matlab stem 属性,matlab中stem函数用法_常见问题解析
matlab中如何自定义图例_常见问题解析 matlab中自定义图例的方法:首先打开matlab软件:然后点击勾选按钮,新建一个文件并输入代码为"x = 0:pi/50:2*pi;" ...
- stem什么意思matlab,matlab中stem函数用法_常见问题解析,matlab
matlab中如何自定义图例_常见问题解析 matlab中自定义图例的方法:首先打开matlab软件:然后点击勾选按钮,新建一个文件并输入代码为"x = 0:pi/50:2*pi;" ...
- php中 param,php中bind_param()函数用法分析
本文实例讲述了php中bind_param()函数用法.分享给大家供大家参考,具体如下: 从字面上不难理解,绑定的参数:下面我通过一个绑定参数的例子讲一下: for example: bind_par ...
- python中max函数用法_Python中max函数用法实例分析
Python中max函数用法实例分析 更新时间:2015年07月17日 15:45:09 作者:优雅先生 这篇文章主要介绍了Python中max函数用法,实例分析了Python中max函数的功能与使用 ...
最新文章
- buildroot管理uboot+kernel+rootfs
- ms project(第一篇笔记)
- 模型训练太慢?显存不够用?这个算法让你的GPU老树开新花
- 使用 Swift 在 iOS 10 中集成 Siri —— SiriKit 教程
- cs寄存器 x86 特权模式_Windows操作系统管理进程和线程:内核模式和用户模式
- mysql主库从库在同一台服务器_mysql数据库从一台服务器迁移到另一台服务器上...
- 《网络科学导论》——博弈模型笔记
- 免费手机电脑同屏神器——Mirroid
- MYSQL 经纬度 地理位置
- ElasticSearch服务器的搭建与使用
- JAVA微信小程序医院预约挂号小程序系统毕业设计 开题报告
- 【设计】01-15个漂亮的网站UI设计作品案例欣赏
- LeedCode 376. 摆动序列
- 数据分析:当回音哥唱music时,他在唱些什么~~~
- win7 任务栏 通知区域
- ntp服务restrict_NTP服务搭建详解一条龙
- sql server出生年月减去退休年月 计算年龄
- Linux实训项目二 用户和组的管理
- UE4蓝图流程控制:FlipFlop节点、DoOnce节点的使用
- word插入图片,嵌入型,无效果
热门文章
- unity3D使用User32.dll
- Lua调用c++ DLL 文件
- spring boot项目发送邮件
- 内部比较器:Comparable的定义使用
- 更新sdk_即构ZegoLiveRoom SDK版本更新,新增多项功能及自定义设置
- 百度seo排名点击器app_手机端百度搜索排名seo优化_百度移动端整站关键词排名优化...
- 如何添加、管理和删除PDF高亮文本?
- find命令使用及实例
- CentOS 6.5安装配置Nginx
- eclipse下搭建SSH整合环境(Struts2+Spring+Hibernate+maven)