Pytorch基础 - 7. torch.transpose() 和 torch.permute()

news2024/10/6 1:37:48

目录

1. torch.transpose(dim0, dim1) 

2. torch.permute(dims) 

3. 在转置函数之后使用view()


PyTorch中使用torch.transpose() 和 torch.permute()可对张量进行维度的转置,具体内容如下:

1. torch.transpose(dim0, dim1) 

参数: 需要转置的两个维度,即dim0和dim1,顺序可以互换,但一次只能进行两个维度的转换

示例:将shape为[3, 4]的张量,通过transpose()转换成维度为[4, 3]的张量

x = torch.rand(3, 4)
print(x.shape)  # torch.Size([3, 4])
y1 = x.transpose(0, 1)
print(y1.shape)  # torch.Size([4, 3])
y2 = x.transpose(1, 0)
print(y2.shape)  # torch.Size([4, 3])

2. torch.permute(dims) 

参数: dims,可以是list, tuple等,表示进行转置的时候可以一次性进行多维度的转置,且必须传入所有维度数,参数有顺序关系,参数的顺序表示原tensor的哪一维

示例1:进行二维转置

x.permute(1, 0)表示转置后x的shape为[原tensor第1维,原tensor第0维],也就是[4, 3]。更简单的理解就是把原来的维度比作一个数组 list=[3, 4],permute中的数表示数组对应的index,则转置后的x为 [list[1], list[0]] = [4, 3]

x = torch.rand(3, 4)
print(x.shape)  # torch.Size([3, 4])
y1 = x.permute(1, 0)
print(y1.shape)  # torch.Size([4, 3])

示例2:进行多维度同时转置。按照上面数组的方式进行理解,x的原维度表示数组 array = [3, 4, 5, 8],转置后的维度 = [array[1], array[0], array[3], array[2]] = [4, 3, 8, 5]

x = torch.rand(3, 4, 5, 8)
print(x.shape)  # torch.Size([3, 4, 5, 8])
y1 = x.permute(1, 0, 3, 2)
print(y1.shape)  # torch.Size([4, 3, 8, 5])

3. 在转置函数之后使用view()

注意:在使用transpose或permute之后,若要使用view()改变其形状,必须先contiguous()。或者直接使用reshape()直接代替contiguous().view(),具体原因可见本博客PyTorch系列中的 Pytorch基础 - 6. torch.reshape() 和 torch.view()

示例1:直接使用view(),会报错

 示例2:使用contiguous().view(),未报错,且得到了输出结果

x = torch.rand(3, 4)
print(x.shape)  # torch.Size([3, 4])
y1 = x.permute(1, 0)
print(y1.shape)  # torch.Size([4, 3])

z = y1.contiguous().view(-1)
print(z.shape)  # torch.Size([12])

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

React native RN 开发实例

多入口加载方式 React Native 混合开发多入口加载方式 - 知乎 initialProperties 官方文档:React Navigation moduleName 案例:GitHub - hcn1519/ReactNative-iOS-Example React Native 混合开发多入口加载方式 - 知乎 项目结构 参考&#xff1…

传奇修改怪物属性教程:传奇服务端架设后怪物不主动攻击是什么原因?

当你架设好传奇服务端后怪物不主动攻击是什么原因呢?今天飞飞来和你分享 1、检查是否进入了管理员隐藏模式 如果是你设置了GM号进入了隐身模式,登录游戏就会有登录脚本默认管理上线检测,怪物看到你是GM管理员自然不会攻击你的,你…

(顶级理解)为什么Vue中的v-if 和v-for不建议一起用?

目录 1.背景 2.原因 3.通俗案例 4.解决方案 5.扩展(强烈看下) 1.背景 我们都知道v-if和v-for是vue开发工程中十分常用的方法 2.原因 当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级。这意味着 v-if 将分别重复运行于 每…

jQuery 基础入门速成下篇

jQuery高级 事件冒泡 什么是事件冒泡? 在一个对象上触发某类事件,此对象上定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或事件返回true,那么这个事件会向这个对象的父级对象传…

门禁系统中人脸检测技术的原理剖析和使用教程

引言 人脸检测 API 是一种基于深度学习技术的图像处理API,可以快速地检测出一张图片中的人脸,并返回人脸的位置和关键点坐标,在人脸识别系统、人脸情绪识别等多种场景下都有极大的应用。 本文将从人脸检测的发展历程、原理、特点等角度出发…

第五章 RNN

目录 5.1 概率和语言模型5.1.1 概率视角下的 word2vec5.1.2 语言模型5.1.3 将CBOW模型用作语言模型? 5.2 RNN5.2.1 循环的神经网络5.2.2 展开循环5.2.3 Backpropagation Through Time5.2.4 Truncated BPTT5.2.5 Truncated BPTT的mini-batch学习 5.3 RNN的实现5.3.1 …

【博云+智领云】携手云原生大数据领域,开展深度合作

近日,博云与LinkTimeCloud智领云达成战略合作伙伴关系,基于此前坚实合作基础,全面拓宽合作广度与深度,共同推出基于Kubernetes的企业级容器云云原生大数据技术融合的新型数字化IT底座,并且在某国家级创新中心首次落地。…

高精度的乘除法(C++实现)

前言:我们都熟知高精度的加减法可以用字符串来模拟实现,其实乘除法的高精度计算也和加减法类似却也略有不同,下面我们一起来看一下高精度的乘除法的模拟实现,希望可以帮助到大家。 目录 1.高精度乘法的实现 1.1原理重点难点解析…

一图看懂 pyexcel 模块:提供统一 API用来读写操作 Excel 文件的库, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 pyexcel 模块:提供统一 API用来读写操作 Excel 文件的库, 资料整理笔记(大全) 摘要模块图类关系图模块全展开【pyexcel】统计常量模块1 …

ABAP:自定义搜索帮助:可参考标准函数F4IF_SHLP_EXIT_EXAMPLE

当我们在自定义选择屏幕中, 需要写入我们自定义的搜索帮助的时候,可以通过预定义函数来实现: 实例说明: 第一步:创建搜索帮助SE11分销渠道(Z_VTWEG) 1.选择基本索引帮助: 2.选择参考表,因为这…

Java 基础——HashMap 底层数据结构与源码分析

目录 1.HashMap 简介2.HashMap 底层数据结构2.2.JDK1.8 之前2.3.JDK1.8 及以后 3.常量定义3.1.默认初始化容量3.2.最大容量3.3.负载因子3.4.阈值 4.HashMap 源码分析4.1.构造函数4.2.Node<K, V>4.2.put(K key, V value)流程源码 4.3.get(Object key)流程源码 4.4.resize(…

java使用阿里云oss上传文件

java使用阿里云oss上传文件 1、oss 是什么&#xff1f; OSS是阿里云对象存储服务&#xff08;Object Storage Service&#xff09;的一个简称&#xff0c;它是阿里云提供的海量、安全、低成本、高可靠的云存储服务。 即开即用、无限大空间的存储集群。相较传统建服务器存储而…

逻辑回归模型预测

范例题目&#xff1a; 建立一个逻辑回归模型预测一个学生是否通过研究生入学考试。N表示训练集中学生个数&#xff0c;Score1、Score2、 Score3、 Score4是N维数组&#xff0c;分别表示N个学生研究生初试、专业课复试、英语面试成绩、专业课面试成绩。Admitted是N维{0,1}数组&a…

RabbitMQ编程模型

RabbitMQ基础概念 RabbitMQ是基于AMQP协议开发的一个MQ产品。 虚拟主机 virtual host RabbitMQ出于服务器复用的想法&#xff0c;可以在一个RabbitMQ集群中划分出多个虚拟主机&#xff0c;每一个虚拟主机都有AMQP的全套基础组件&#xff0c;并且可以针对每个虚拟主机进行权…

面向对象(高级)-Annotation注解、单元测试的使用

注解&#xff08;Annotation&#xff09; 注解大纲 注解的使用1.Annotation的理解 - 注解&#xff08;Annotation&#xff09;是从JDK5.0开始引入&#xff0c;以注解名在代码中存在。 - Annotation可以像修饰符一样被使用&#xff0c;可用于修饰包、类、构造器、方法、成员变…

LeetCode:59. 螺旋矩阵 II

&#x1f34e;道阻且长&#xff0c;行则将至。&#x1f353; &#x1f33b;算法&#xff0c;不如说它是一种思考方式&#x1f340; 算法专栏&#xff1a; &#x1f449;&#x1f3fb;123 一、&#x1f331;59. 螺旋矩阵 II 题目描述&#xff1a;给你一个正整数 n &#xff0c…

Python中类属性和类方法

1. 类的结构 1.1 术语 —— 实例 使用面相对象开发&#xff0c;第 1 步 是设计 类使用 类名() 创建对象&#xff0c;创建对象 的动作有两步&#xff1a; (1) 在内存中为对象 分配空间 (2) 调用初始化方法 __init__ 为 对象初始化对象创建后&#xff0c;内存 中就有了一个对象…

【敲敲云】零代码实战,主子表汇总统计—免费的零代码产品

近来很多朋友在使用敲敲云时&#xff0c;不清楚如何使用主子表&#xff0c;及如何在主表中统计子表数据&#xff1b;下面我们就以《订单》表及《订单明细》表来设计一下吧&#xff0c;用到的组件有“设计子表”、“公式”、“汇总”等。 《订单》表展示 总金额 订单明细中“小…

C++ Linux Web Server 面试基础篇-操作系统(三、进程通信)

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三连支持一下呗。👍⭐️❤️ Qt5.9专栏定期更新Qt的一些项目Demo 项目与…

恢复调度平台mysql主从同步

修复问题 调度平台两台MySQL从节点存在Slave_SQL_Running异常&#xff0c;需要恢复。 部署步骤 一、先停止调度平台core服务与web服务&#xff0c;否则无法正常锁表 1.1停止调度平台core服务 2.1停止web服务 3.确认MySQL所有执行线程是否都已经停止 show processlist; 如…