Pytorch之permute函数

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函数里维度变化的详细过程 注意: 本文是这篇torch中permute()函数用法文章的补充内容 如果有精力可以 阅读详情

Pytorch之permute函数

1 先看看官方中英文doc:

  torch.Tensor.permute (Python method, in torch.Tensor)

1.1 permute(dims)

将tensor的维度换位。

参数: - dims (int …*) - 换位顺序

例:

>>> x = torch.randn(2, 3, 5) 
>>> x.size() 
torch.Size([2, 3, 5]) 
>>> x.permute(2, 0, 1).size() 
torch.Size([5, 2, 3])

2 pytorch permute的使用

permute函数功能还是比较简单的,下面主要介绍几个细节点:

2.1 transpose与permute的异同

Tensor.permute(a,b,c,d, …):permute函数可以对任意高维矩阵进行转置,但没有 torch.permute() 这个调用方式, 只能 Tensor.permute():

>>> torch.randn(2,3,4,5).permute(3,2,0,1).shape
torch.Size([5, 4, 2, 3])

torch.transpose(Tensor, a,b):transpose只能操作2D矩阵的转置,有两种调用方式;

另:连续使用transpose也可实现permute的效果:

>>> torch.randn(2,3,4,5).transpose(3,0).transpose(2,1).transpose(3,2).shape
torch.Size([5, 4, 2, 3])
>>> torch.randn(2,3,4,5).transpose(1,0).transpose(2,1).transpose(3,1).shape
torch.Size([3, 5, 2, 4])

从以上操作中可知,permute相当于可以同时操作于tensor的若干维度,transpose只能同时作用于tensor的两个维度;

2.2 permute函数与contiguous、view函数之关联

contiguous:view只能作用在contiguous的variable上,如果在view之前调用了transpose、permute等,就需要调用contiguous()来返回一个contiguous copy;

一种可能的解释是:有些tensor并不是占用一整块内存,而是由不同的数据块组成,而tensor的view()操作依赖于内存是整块的,这时只需要执行contiguous()这个函数,把tensor变成在内存中连续分布的形式;

判断ternsor是否为contiguous,可以调用torch.Tensor.is_contiguous()函数:

import torch 
x = torch.ones(10, 10) 
x.is_contiguous()                                 # True 
x.transpose(0, 1).is_contiguous()                 # False
x.transpose(0, 1).contiguous().is_contiguous()    # True

另:在pytorch的最新版本0.4版本中,增加了torch.reshape(),与 numpy.reshape() 的功能类似,大致相当于 tensor.contiguous().view(),这样就省去了对tensor做view()变换前,调用contiguous()的麻烦;

3 permute与view函数功能demo

import torch
import numpy as np

a=np.array([[[1,2,3],[4,5,6]]])
unpermuted=torch.tensor(a)
print(unpermuted.size())              #  ——>  torch.Size([1, 2, 3])

permuted=unpermuted.permute(2,0,1)
print(permuted.size())                #  ——>  torch.Size([3, 1, 2])

view_test = unpermuted.view(1,3,2)
print(view_test.size())               #  ——>  torch.Size([1, 3, 2])

利用函数 permute(2,0,1) 可以把 Tensor([[[1,2,3],[4,5,6]]]) 转换成:

tensor([[[ 1,  4]],
        [[ 2,  5]],
        [[ 3,  6]]])     # print(permuted)    

如果使用view(1,3,2) 可以得到:

tensor([[[ 1,  2],
         [ 3,  4],
         [ 5,  6]]])   # print(view_test)
Pytorch之permute函数:用于调换不同维度的顺序,BCHW -> NCHW https://zhuanlan.zhihu.com/p/76583143 非常方便 MY transpose与permute的异同 Tensor.permute(a,b,c,d, ...):permute函数可以对任意高维矩阵进行转置,但没有 torch.permute() 这个调用方式, 只能 Tensor.permute(): 可以从链接中看到 ... 阅读详情

相关推荐

PyTorch张量维度操作:transpose与permute详解

张量维度操作是深度学习中的基础技术,尤其在PyTorch等框架中广泛应用。其核心原理是通过改变张量的维度顺序来满足不同计算需求,而不改变实际数据内容。transpose和permute作为两种常用操作,分别适用于交换两个维度和任意重组所有维度的场景。在计算机视觉、自然语言处理等领域,这些操作对数据预处理、模型架构设计至关重要。例如在视频分析任务中处理[batch, channels, time, height, width]形状的张量,或在NLP中重组注意力矩阵的维度。理解内存布局变化、梯度传播机制以及性能

weixin_32377497的博客 208

Pytorch基础:Tensor的permute()方法

PyTorch中的permute()方法用于对张量维度进行转置,返回与原张量共享存储的新视图对象。该方法支持任意维度的重排,与仅能交换两个维度的transpose()方法相比更为灵活。需要注意的是,permute()操作可能导致新张量不连续,且新旧张量数据共享存储,修改任一对象都会影响另一个。通过示例代码展示了permute()的基本用法和特性,包括对象ID比较、存储地址验证以及连续性检测等。

保持终身学习的能力,温故而知新 4292

pytorch:深入理解 reshape(), view(), transpose(), permute() 函数

文章目录前言1. view()① 1 阶变高阶1 阶变 2 阶1 阶变 3 阶1 阶变 4 阶1 阶变 m 阶② 2 阶变 m 阶③ 3 阶变 m 阶④ 4 阶变 m 阶2. transpose()② 2 阶张量③ 3 阶张量④ 4 阶张量3. permute() 前言 view() 函数是进行张量维度重构的函数,permute() 和 transpose() 是进行张量维度转换的函数。 1. view() ① 1 阶变高阶 1 阶变 2 阶 对于一个 1 阶张量 x,进行 view(h, w) 操作就是按

书山有路,学海无涯! 1万+

permute函数_Pytorch之permute函数

1 先看看官方中英文doc: torch.Tensor.permute (Python method, in torch.Tensor)1.1 permute(dims)将tensor的维度换位。参数: - __dims__ (int ..*) - 换位顺序例:>>> x = torch.randn(2, 3, 5) >>> x.size() torch...

weixin_39547298的博客 1793

从EXIF到测绘:解码大疆影像元数据的实战应用指南

本文深入解析了大疆无人机影像元数据的实战价值,重点阐述了如何利用EXIF和XMP中的GPS、RTK、姿态角及相机内参等关键信息,提升测绘、三维重建及精准农业等项目的成果精度与效率。通过自动化质检脚本与行业应用场景剖析,指导从业者将元数据从信息转化为生产力,实现从拍照到专业测绘的跨越。

dell8的博客 527

从零到一:鲲鹏920服务器上的DeepSeek模型部署全流程解析

本文详细解析了在华为鲲鹏920服务器上部署DeepSeek模型的全流程,包括环境准备、模型服务框架部署、性能优化及生产环境方案。通过ARM架构优化和量化技术,显著提升模型推理效率,适用于企业级AI应用场景,助力国产化技术落地。

weixin_29094775的博客 599

python中permute_Pytorch之permute函数

1、主要作用:变换tensor维度example:importtorchx= torch.randn(2, 3, 5)print(x.size())print(x.permute(2, 0, 1).size())>>>torch.Size([2, 3, 5])>>>torch.Size([5, 2, 3])2、介绍一下transpose与permute的异同:同...

weixin_39717443的博客 3464

FPGA时序约束--实战篇(读懂Vivado时序报告)

本文将详细介绍如何读懂Vivado时序报告,包括报告的基本结构和如何分析报告。

mengzaishenqiu的博客 1万+

permute函数(Pytorch)

permute函数的作用是对tensor进行转置。 import torch import torch.nn as nn x = torch.randn(1, 2, 3, 4) print(x.size()) print(x.permute(2, 1, 0, 3).size()) 随机生成一个1X2X3X4的四维向量,permute函数的参数表示的是转置后的向量位置。比如原向量中(1, 2, 3, 4),1的下标是0,2的下标是1,3的下标是2,4的下标是3;在x.permute(2,.

qq_43363657的博客 1万+

GEE 案例:基于陆地卫星8号(大气层顶反射率数据)LANDSAT/LC08/C02/T1_TOA的生态遥感指数RSEI计算、可视化和下载

摘要:基于GEE的遥感生态指数(RSEI)计算方法 本文介绍了利用Google Earth Engine(GEE)平台计算遥感生态指数(RSEI)的全流程方法。主要内容包括:研究区域定义、Landsat8数据获取与去云预处理、关键生态指标计算(地表温度LST、植被指数NDVI、湿度指数WET和建筑指数NDBSI)、主成分分析(PCA)降维处理,以及结果可视化与数据导出。通过结合多源遥感指标并采用归一化处理,构建了综合反映区域生态环境质量的RSEI指数。该方法为生态环境监测提供了高效的技术方案,所有计算过程均

此星光明博客 460

在lio_sam中融入GPS

在LIO(激光惯性里程计)系统中,将GPS信息融合到里程计中,借助GTSAM(Georgia Tech Smoothing and Mapping)库进行因子图优化,可以有效提升全局定位精度。当进入到GPS信号不好或缺失的环境中,需要借助融合后的里程计反算经纬度,来获取高精度的定位信息。利用GeographicLib第三方库将经纬度投影到局部笛卡尔坐标系中。

如果想成为中心,那么就到中心去吧。 1211

pytorch-gather函数和permute()函数

目录 一、gather()函数 1. 拿到一个张量: 2. 生成一个查找规则: 3. 根据维度dim开始查找: 二、permute()函数 结论 一、gather()函数 首先,给出官方文档的链接: https://pytorch.org/docs/stable/generated/torch.gather.html?highlight=gather#torch.gather 然后,我用白话翻译一下官方文档。 gather,顾名思义,聚集、集合。有点像军训的时候,排队一样,把队伍.

识物专栏 12万+

YOLOv11改进 | 网络结构代码逐行解析(二) | yolov11中的Mosaic增强详解

本文给大家带来的是YOLOv10中的Mosaic增强代码的详解,可能有部分人对于这一部分比较陌生,有的读者可能知道Mosaic增强但是不知道其工作原理,具体来说Mosaic增强就是指我们的数据集中的图片在输入给模型之前的一个处理过程(我们的图片并不是直接就输入给模型了,大家的训练结果中的结果检测图片大家可以看到数据集中多个图片会组合在一起这就是简单的Mosaic增强),下面我就来讲解一下其在YOLOv10中工作原理和代码定义,下面图片为一个Mosaic增强后的图片。​。

Snu77的博客 5023

python pytorch permute函数

permute(多维数组,[维数的组合]) 比如: a=rand(2,3,4);  %这是一个三维数组,各维的长度分别为:2,3,4 %现在交换第一维和第二维: permute(A,[2,1,3])  %变成3*2*4的矩阵 import torch import numpy    as np a=np.array([[[1,2,3],[4,5,6]]]) unpermuted=...

游戏boy 3万+

Python 爬虫实战:爬取 Bing 搜索功能链接(国际搜索引擎数据采集技巧)

在当今数字化信息爆炸的时代,搜索引擎已成为我们获取知识、了解世界的得力助手。Bing,作为全球知名的搜索引擎之一,拥有庞大的数据索引和精准的搜索算法。通过 Python 爬虫技术爬取 Bing 搜索区域的链接信息,不仅能帮助我们快速收集大量有价值的数据,还能为后续的数据分析、内容挖掘等任务提供丰富的素材。

yansideyucsdn的博客 1340

HQChart实战教程21 - uniapp app端K线图定制tooltip

HQChart实战教程21 - uniapp app端K线图定制tooltip序效果步骤2. 注册标题绘制事件3. 标题绘制回调函数格式说明eventdataobjtooltip显示函数完整代码HQChart代码地址 序 hqchartK线图内置一个tooltip, 如果需要定制一个tooltip, 我们可以通过注册绘制标题事件,来自己做一个div显示数据。 参考教程HQChart实战教程7-自定义显示手势点击K线显示信息 效果 步骤 在外部创建一个view,并在view里创建需要显示的信息字段. 例子里

小银 2561

pytorch中的维度调换permute()函数

第一步,给出官方文档中关于permute的解释: https://pytorch.org/docs/stable/tensors.html?highlight=permute#torch.Tensor.permute 第二步,我用白话解释一下官方文档。 permute的中文意思是,“排列组合”。permute()可以对某个张量的任意维度进行调换。 我们看一个demo: import torch a = torch.randn(2,3,5) b = a.permute(1,2,0) print(b

木盏 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【深度学习pytorch-11】transpose和 permute 函数

transpose。

m0_69378371的博客 1638

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

pytorch tranpose与permute函数

transpose和permute都是转置函数,可以交换Tensor的维度。transpose函数一次只能交换两个维度,permute一次可以操作多个维度,因此permute在高维的功能性更强。

luxurie的小窝 1187

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Pytorch中 permute / transpose 和 view / reshape, flatten函数

Pytorch中 permute、transpose 和 view 、resize函数

ytusdc的博客 5922

Pytorch维度转换操作:view,reshape,permute,flatten函数详解

Pytorch维度转换操作:view,reshape,permute,flatten函数详解

qq_41920323的博客 1791

Pytorch:permute()函数

permute函数交换维度

qq_54708219的博客 1069

permute函数_Pytorch之contiguous函数

1 先看看官方中英文doc:torch.Tensor.contiguous (Python method, in torch.Tensor) torch.Tensor.is_contiguous (Python method, in torch.Tensor)1.1 contiguous() → TensorReturns a contiguous tensor containing the sa...

weixin_39626369的博客 2184

pytorch中的permute()函数的原理

代码a.permute(2,0,1)把最初的2,3,4维度,给调整成了4,2,3维度,并且保持维度内的数值关系不变。那么代码a.permute(1,0)就相当于a.T。他的功能就是把一个多维张量的维度进行调换。仔细观察数值位置的变化,就会理解了。permute的中文含义是:置换。这个就已经解释了一半了。

COOKER的博客 760
上一篇: pytorch的两个函数 .detach() .detach_() 的作用和区别
下一篇: pytorch中torch.chunk()方法
Code_demon
博客等级 码龄8年 2粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值