一、前言

之前写了篇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 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)

这部分就是(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)

最后行列交换,即转置

三、写在最后

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

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

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

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

pytorch中permute()函数用法补充说明(矩阵维度变化过程)的更多相关文章

  1. PHP实现的62进制转10进制,10进制转62进制函数示例

    这篇文章主要介绍了PHP实现的62进制转10进制,10进制转62进制函数,结合具体实例形式分析了php针对62进制与10进制相互转换的操作技巧,需要的朋友可以参考下

  2. php 函数中静态变量使用的问题实例分析

    这篇文章主要介绍了php 函数中静态变量使用的问题,结合实例形式分析了php 函数中静态变量使用过程中遇到的问题,以及相关操作注意事项,需要的朋友可以参考下

  3. PHP的mysqli_ssl_set()函数讲解

    今天小编就为大家分享一篇关于PHP的mysqli_ssl_set()函数讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

  4. php检查函数必传参数是否存在的实例详解

    这篇文章主要介绍了php检查函数必传参数是否存在的实例详解的相关资料,需要的朋友可以参考下

  5. nodejs中函数的调用实例详解

    本文通过实例代码给大家介绍了nodejs函数的调用,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

  6. PHP iconv()函数字符编码转换的问题讲解

    今天小编就为大家分享一篇关于PHP iconv()函数字符编码转换的问题讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

  7. Vue3.2 setup语法糖及Hook函数基本使用

    这篇文章主要为大家介绍了Vue3.2 setup语法糖及Hook函数基本使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  8. AngularJS中控制器函数的定义与使用方法示例

    这篇文章主要介绍了AngularJS中控制器函数的定义与使用方法,结合具体实例形式分析了AngularJS控制器函数的定义、绑定及相关使用技巧,需要的朋友可以参考下

  9. Vue源码makeMap函数深入分析

    vue源码中的makeMap用在很多地方,主要是判断标签是原生标签还是用户自定义的组件,但是标签很多,如果每判断一次都执行一次循环,累计下来,性能损耗还是很大的,makeMap就是解决这个问题出现的

  10. 一个目录遍历函数

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部