pytorch tranpose与permute函数
transpose
和permute
都是转置函数,可以交换Tensor的维度。
1. transpose
torch.transpose(input, dim0, dim1, out=None)
→ \rightarrow →Tensor
transpose
函数用于交换input
的维度dim0
和dim1
,只能交换两个维度,且dim0和dim1的参数位置没有顺序而言。
例子:
a = torch.arange(6).reshape((2, 3))
a, a.transpose(1, 0) # shape从(2, 3)变成(3, 2)Out:tensor([[0, 1, 2],[3, 4, 5]])tensor([[0, 3],[1, 4],[2, 5]])
a.transpose(1, 0)
与a.transpose(0, 1)
相同,都是将第0个维度和第1个维度交换。
a.transpose(1, 0) == a.transpose(0, 1)Out: tensor([[True, True],[True, True],[True, True]])
作用于高维:
b = torch.arange(24).reshape((2, 3, 4))
b.transpose(1, 2) # shape从(2, 3, 4)变成(2, 4, 3)
b.transpose(0, 1, 2) # 报错,只能输入两个维度进行交换
2. permute
torch.permute(input, dims)
→ \rightarrow → Tensor
permute
函数相当于把input
的各个维度进行了重排列,可以一次性交换多个维度,参数dims
的长度必须与input
的维度相同。
例子:
print(torch.permute(a, (1, 0))) # shape从(2, 3) 变成 (3, 2)
print(torch.permute(a, (0, 1)) == a) # 不变Out:tensor([[0, 3],[1, 4],[2, 5]])tensor([[True, True, True],[True, True, True]])
作用于高维:
b.permute(1, 0, 2) # shape从(2, 3, 4)变成(3, 2, 4)
b.permute(2, 0, 1) # shape从(2, 3, 4)变成(4, 2, 3)
b.permute(1, 0) # 报错,必须要输入三个维度
由于permute
一次可以操作多个维度,因此在高维的功能性比transpose
更强,不过permute
能做到的transpose
也能做到,只不过transpose
可能要多调用几次,transpose
能做到的permute
也都能做到。
pytorch tranpose与permute函数相关推荐
- pytorch:深入理解 reshape(), view(), transpose(), permute() 函数
文章目录 前言 1. reshape() 2. view() ① 1 阶变高阶 1 阶变 2 阶 1 阶变 3 阶 1 阶变 4 阶 1 阶变 m 阶 ② 2 阶变 m 阶 ③ 3 阶变 m 阶 ④ ...
- PyTorch中contiguous、view、Sequential、permute函数的用法
在pytorch中,tensor的实际数据以一维数组(storage)的形式存储于某个连续的内存中,以"行优先"进行存储. 1. tensor的连续性 tensor连续(conti ...
- Pytorch之permute函数
参考 Pytorch之permute函数 - 云+社区 - 腾讯云 1.主要作用:变换tensor维度 example: import torch x = torch.randn(2, 3, 5) p ...
- permute函数(Pytorch)
permute函数的作用是对tensor进行转置. import torch import torch.nn as nnx = torch.randn(1, 2, 3, 4) print(x.size ...
- python中permute_Pytorch之permute函数
1 先看看官方中英文doc: torch.Tensor.permute (Python method, in torch.Tensor) 1.1 permute(dims) 将tensor的维度换位. ...
- pytorch中的contiguous()函数的浅浅解释
contiguous() 有些tensor并不是占用一整块内存,而是由不同的数据块组成. contiguous()函数的作用:把tensor变成在内存中连续分布的形式. 来自链接一 contiguou ...
- 关于PyTorch中的register_forward_hook()函数未能执行其中hook函数的问题
关于PyTorch中的register_forward_hook()函数未能执行其中hook函数的问题 Hook 是 PyTorch 中一个十分有用的特性.利用它,我们可以不必改变网络输入输出的结构, ...
- Pytorch中的collate_fn函数用法
Pytorch中的collate_fn函数用法 官方的解释: Puts each data field into a tensor with outer dimension batch size ...
- pytorch PixelShuffle和Upscale函数
pytorch PixelShuffle和Upscale函数 该函数设计思想来源于2016年的一篇SR文章,Real-Time Single Image and Video Super-Resol ...
最新文章
- python cx_oracle 有超时的设置吗_python cx_Oracle的基础使用方法(连接和增删改查)
- python模块os测试文件是否存在及基础原信息获取
- JavaSE核心之一:Date类、Calendar类、Math类、枚举;
- WF流程设计器升级说明
- 为什么String中的Java hashCode()使用31作为乘数?
- 面试中如何回答自身的“缺点”
- 005_Java操作ZooKeeper
- 用于计算机视觉领域的python第三方库是什么_大量Python开源第三方库资源分类整理,含菜鸟教程章节级别链接...
- VTK:模型之ContourTriangulator
- 11-Flutter移动电商实战-首页_屏幕适配方案和制作
- golang 升级到新版本_Scikit-learn新版本发布,一行代码秒升级
- 12.IDA-虚函数和虚表(vf代表虚函数,vf3代表this指向第三个函数)
- idea 查看jsp是否被引用_IDEA集成Java性能分析神器JProfiler
- svd pca matlab,从SVD到PCA——奇妙的数学游戏
- JavaScript中数组去重的几种方法整理
- JavaSE第八章 IO流
- 应届生软件测试面经_应届毕业生面试软件测试工程师时应注意什么?
- flutter网络请求基础知识铺垫、及实战举例
- 计算机图形学椭圆Java代码,【计算机图形学】二、椭圆的生成
- java计算机毕业设计培训机构运营系统源码+程序+lw文档+mysql数据库