当前位置: 首页 > news >正文

PyTorch中的permute, transpose, view, reshape和flatten函数详解(已解决)

1.permute

permute函数用于重新排列张量的维度。它接受一个元组作为参数,表示新的维度顺序。例如,如果我们有一个形状为(2, 3)的二维张量,我们可以使用permute函数将其维度重新排列为(3, 2),如下所示:

>>> import torch
>>> x = torch.randn(2,3)
>>> x
tensor([[-0.5945,  0.7441,  0.5515],[-1.3831,  0.4533, -0.6908]])
>>> y = x.permute(1,0)
>>> y
tensor([[-0.5945, -1.3831],[ 0.7441,  0.4533],[ 0.5515, -0.6908]])
>>>

首先创建了一个形状为(2, 3)的二维张量x。然后,我们使用permute函数将其维度重新排列为(3, 2),并将结果存储在变量y中。

2.transpose

transpose函数用于交换张量的两个维度。它接受两个整数作为参数,表示要交换的维度的索引。例如,如果我们有一个形状为(2, 3)的二维张量,我们可以使用transpose函数交换第0维和第1维,如下所示:

>>> import torch
>>> x = torch.randn(2,3)
>>> x
tensor([[-0.5945,  0.7441,  0.5515],[-1.3831,  0.4533, -0.6908]])>>> y=x.transpose(0,1)
>>> y
tensor([[-0.5945, -1.3831],[ 0.7441,  0.4533],[ 0.5515, -0.6908]])
>>>

在上面的例子中,创建了一个形状为(2, 3)的二维张量x。然后,我们使用transpose函数将第0维和第1维交换,并将结果存储在变量y中。
需要注意的是,transpose函数与permute函数不同,它只交换两个特定的维度,而permute函数可以重新排列所有维度。

3.view / reshape

view和reshape函数用于将张量重塑为不同的形状。它们接受一个或两个整数元组作为参数,表示新的形状。例如,如果我们有一个形状为(2, 3)的二维张量,我们可以使用view或reshape函数将其重塑为形状为(6,)的一维张量,如下所示:

>>> import torch
>>> x = torch.randn(2,3)
>>> x
tensor([[-0.5945,  0.7441,  0.5515],[-1.3831,  0.4533, -0.6908]])>>> y = x.view(-1)
>>> y
tensor([-0.5945,  0.7441,  0.5515, -1.3831,  0.4533, -0.6908])
# 或者
>>> y=x.reshape(-1)
>>> y
tensor([-0.5945,  0.7441,  0.5515, -1.3831,  0.4533, -0.6908])
>>>

在上面的例子中,创建了一个形状为(2, 3)的二维张量x。然后,我们使用view或reshape函数将x重塑为形状为(6,)的一维张量,并将结果存储在变量y中。
需要注意的是,view和reshape函数实际上不会改变张量中的数据,只是改变了数据的布局方式。因此,新的形状必须与原始形状兼容,否则会抛出错误。具体来说,新的形状的元素总数必须与原始形状的元素总数相同。

4. flatten

flatten函数用于将多维张量展平为一维张量。它接受一个整数作为参数,表示展平后的一维张量的最大长度。例如,如果我们有一个形状为(2, 3)的二维张量,我们可以使用flatten函数将其展平为一维张量,如下所示:

>>> import torch
>>> x = torch.randn(2,3)>>> y=x.flatten(1)
>>> y
tensor([[-0.5945,  0.7441,  0.5515],[-1.3831,  0.4533, -0.6908]])
>>> y=x.flatten(0)
>>> y
tensor([-0.5945,  0.7441,  0.5515, -1.3831,  0.4533, -0.6908])
>>> y=x.flatten(2)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
IndexError: Dimension out of range (expected to be in range of [-2, 1], but got 2)

在上面的例子中,创建了一个形状为(2, 3)的二维张量x。然后,我们使用flatten函数将x展平为一维张量,并将结果存储在变量y中。需要注意的是,flatten函数的参数指定了展平后的一维张量的最大长度。在本例中,我们将最大长度设置为1,因此展平后的张量将具有形状(6,)。如果展平后的长度超过了指定的最大长度,将会抛出错误。
总结:在PyTorch中,permute、transpose、view、reshape和flatten函数都是用于改变张量形状和维度的工具。它们具有不同的用途和特点,可以根据具体需求选择合适的函数来操作张量。

http://www.lqws.cn/news/478711.html

相关文章:

  • python的高校教师资源管理系统
  • 3、NLP黄金九步法(问题定义-数据获取-数据探索)
  • Pandas 数据清洗
  • Java设计模式之适配器模式
  • Linux 内核配置核心文件config与流程
  • MATLAB的readmatrix函数
  • Electron架构深度解析:用Web技术构建桌面应用的桥梁
  • 什么是缺口箱线图?如何绘制?
  • .Net 9.0环境下WebApi发布到IIS
  • VB.NET,C#在线程中修改UI的安全操作
  • rknn优化教程(三)
  • WEB3开启 Hardhat 自动验证有什么意义
  • uview ui request get / post 传参含params和json数据的分析和使用
  • 【Redis】解码Redis中hash类型:理解基础命令,以及内部编码方式和使用场景
  • 原创模板--微信小程序 实现的背单词程序
  • 62-Oracle ADR(Automatic Diagnostic Repository)
  • 二、Generative adversarial network (GAN)
  • Spring Boot Actuator 跟踪HTTP请求和响应
  • 【数据结构与算法】数据结构初阶:详解顺序表和链表(一)
  • C++,Qt事件处理机制编程开发练习全解析,23000字解析!!
  • RabbitMQ从入门到实践:消息队列核心原理与典型应用场景
  • Oracle 数据库查询:单表查询
  • 嵌入式通信协议框架的四层架构设计与实现
  • 【云原生】Docker 部署 Elasticsearch 9 操作详解
  • 华为OD-2024年E卷-字符串化繁为简[200分] -- python
  • 「Linux文件及目录管理」vi、vim编辑器
  • Ragflow 源码:task_executor.py
  • Sqlserver 设置对特定数据库特定表只读访问权限
  • 1928: 日期差值 codeup
  • MySQL安装与配置【windowsMac】