transposepermute都是转置函数,可以交换Tensor的维度。

1. transpose

torch.transpose(input, dim0, dim1, out=None) → \rightarrow →Tensor

transpose函数用于交换input的维度dim0dim1,只能交换两个维度,且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函数相关推荐

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

    文章目录 前言 1. reshape() 2. view() ① 1 阶变高阶 1 阶变 2 阶 1 阶变 3 阶 1 阶变 4 阶 1 阶变 m 阶 ② 2 阶变 m 阶 ③ 3 阶变 m 阶 ④ ...

  2. PyTorch中contiguous、view、Sequential、permute函数的用法

    在pytorch中,tensor的实际数据以一维数组(storage)的形式存储于某个连续的内存中,以"行优先"进行存储. 1. tensor的连续性 tensor连续(conti ...

  3. Pytorch之permute函数

    参考 Pytorch之permute函数 - 云+社区 - 腾讯云 1.主要作用:变换tensor维度 example: import torch x = torch.randn(2, 3, 5) p ...

  4. permute函数(Pytorch)

    permute函数的作用是对tensor进行转置. import torch import torch.nn as nnx = torch.randn(1, 2, 3, 4) print(x.size ...

  5. python中permute_Pytorch之permute函数

    1 先看看官方中英文doc: torch.Tensor.permute (Python method, in torch.Tensor) 1.1 permute(dims) 将tensor的维度换位. ...

  6. pytorch中的contiguous()函数的浅浅解释

    contiguous() 有些tensor并不是占用一整块内存,而是由不同的数据块组成. contiguous()函数的作用:把tensor变成在内存中连续分布的形式. 来自链接一 contiguou ...

  7. 关于PyTorch中的register_forward_hook()函数未能执行其中hook函数的问题

    关于PyTorch中的register_forward_hook()函数未能执行其中hook函数的问题 Hook 是 PyTorch 中一个十分有用的特性.利用它,我们可以不必改变网络输入输出的结构, ...

  8. Pytorch中的collate_fn函数用法

    Pytorch中的collate_fn函数用法 官方的解释:   Puts each data field into a tensor with outer dimension batch size ...

  9. pytorch PixelShuffle和Upscale函数

    pytorch PixelShuffle和Upscale函数 ​ 该函数设计思想来源于2016年的一篇SR文章,Real-Time Single Image and Video Super-Resol ...

最新文章

  1. python cx_oracle 有超时的设置吗_python cx_Oracle的基础使用方法(连接和增删改查)
  2. python模块os测试文件是否存在及基础原信息获取
  3. JavaSE核心之一:Date类、Calendar类、Math类、枚举;
  4. WF流程设计器升级说明
  5. 为什么String中的Java hashCode()使用31作为乘数?
  6. 面试中如何回答自身的“缺点”
  7. 005_Java操作ZooKeeper
  8. 用于计算机视觉领域的python第三方库是什么_大量Python开源第三方库资源分类整理,含菜鸟教程章节级别链接...
  9. VTK:模型之ContourTriangulator
  10. 11-Flutter移动电商实战-首页_屏幕适配方案和制作
  11. golang 升级到新版本_Scikit-learn新版本发布,一行代码秒升级
  12. 12.IDA-虚函数和虚表(vf代表虚函数,vf3代表this指向第三个函数)
  13. idea 查看jsp是否被引用_IDEA集成Java性能分析神器JProfiler
  14. svd pca matlab,从SVD到PCA——奇妙的数学游戏
  15. JavaScript中数组去重的几种方法整理
  16. JavaSE第八章 IO流
  17. 应届生软件测试面经_应届毕业生面试软件测试工程师时应注意什么?
  18. flutter网络请求基础知识铺垫、及实战举例
  19. 计算机图形学椭圆Java代码,【计算机图形学】二、椭圆的生成
  20. java计算机毕业设计培训机构运营系统源码+程序+lw文档+mysql数据库

热门文章

  1. 普及一个数分的领域,可能对你有用
  2. 华为和荣耀应该怎么选?买过华为但我更爱荣耀
  3. Vim 插件YouCompleteMe(YCM)安装
  4. Java写内容到本地文件
  5. 高德地图开发从入门到精通之一:高德地图加载
  6. 国漫《姜子牙》口碑真的毁了吗
  7. 将单张图像的json转化成图片
  8. Redis缓存面试题
  9. 全球最强的30个创意网站!(转)
  10. Oracle 12c 新特性