python教程分享pytorch中permute()函数用法补充说明(矩阵维度变化过程)

一、前言

之前写了篇用法文章,在详细的说一下permute函数里维度变化的详细过程

非常感谢@m0_46225327对python教程分享pytorch中permute()函数用法补充说明(矩阵维度变化过程)案例更加细节补充

注意:

python教程分享pytorch中permute()函数用法补充说明(矩阵维度变化过程)是这篇文章的补充内容

如果有精力可以把这篇文章阅读一下,能够更好的理解函数的维度变化过程

以及加深对输出结果的印象

二、举例解释

这里以比较经典的变化四做例子

先回顾一下变化四的内容:

————————————————分割线——————————————

变化四:0与2交换

b = x.permute(2,1,0) # 交换块和列 print(b) print(b.size())

20220429_626b6aa642fc9

20220429_626b6aa67817f

此时参数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 torch x = 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)

20220429_626b6aa6adbae

这部分就是(3,2,5)矩阵中原有的样子

2、permute(0,1,2) → permute(0,2,1)

20220429_626b6aa6e500c

这部分是把3块中的每一块矩阵进行转置操作,即行和列的交换

2行3列==>3行2列

3、permute(0,2,1) → permute(1,0,2)

20220429_626b6aa7274aa

这部分是列不动,把块和行交换

把第一块的五行分别写入变换后的五块中第一行

把第二块的五行分别写入变换后的五块中第二行

把第三块的五行分别写入变换后的五块中第三行

4、permute(1,0,2) → permute(0,2,1)

20220429_626b6aa75d553

最后行列交换,即转置

三、写在最后

如果大家看起来还是比较难理解些

建议可以手写一下这个转换例子,真的一下就懂了

以下是我手写矩阵转化过程

20220429_626b6aa79fa49

到此这篇关于pytorch中permute()函数用法补充说明的文章就介绍到这了,更多相关pytorchpermute()函数用法内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

需要了解更多python教程分享pytorch中permute()函数用法补充说明(矩阵维度变化过程),都可以关注python教程分享栏目—猴子技术宅(www.ssfiction.com)

本站无法对海量内容真伪性鉴别,请勿相信本站任何号码,邮件,站外网址等信息,如有需要,请自行甄别。版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至net@163.com举报,一经查实,本站将立刻删除。
(0)
上一篇 2022年8月14日 上午11:29
下一篇 2022年8月15日 上午8:10

相关推荐

发表回复

登录后才能评论