torch常用操作-torch.transpose、torch.permute、np.transpose

1. 简介

在使用Pytorch中我们经常会对矩阵进行操作,其中比较常用的就是调整维度,交换不同的轴。比如常见的有torch.transpose、torch.permute、np.transpose它们之间是有区别和联系的。

2. torch.transpose

首先举个例子,然后贴个官方文档,意思就是输入矩阵,然后交换两个维度(参数中只有两个维度)。
在这里插入图片描述
变换过程可以理解为:
在这里插入图片描述
在这里插入图片描述

3. torch.permute与np.transpose

这两个操作的效果其实是相同的都可以操作多个轴,只不过一个是tensor,一个是numpy数组。与torch.transpose的区别是permute可以变换多个轴,原理和上一小节一样直接交换坐标,看下官方解释:
在这里插入图片描述

4. 总结

以上的函数都可以进行轴转换操作。np.transpose 同 torch.permute一样,一次修改多个轴;torch.transpose一次只能交换2个轴。

5.参考链接

  1. https://pytorch.org/docs/stable/index.html
  2. https://blog.csdn.net/qq_28949847/article/details/128568827
  3. https://zhuanlan.zhihu.com/p/519296425
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
torch.transpose() 和 torch.permute() 都是 PyTorch 中用于变换张量维度的函数,它们的区别在于: torch.transpose() 函数是对张量的转置操作,只支持二维(矩阵)和三维(批量矩阵)张量的转置。对于二维张量,可以使用该函数将其转置;对于三维张量,可以指定转置的两个维度进行转置。例如: ``` import torch x = torch.randn(3, 4) print(x) # tensor([[ 2.0514, 1.8634, -0.0375, -1.1761], # [-1.3048, 0.0905, 0.3555, 0.2998], # [-0.5564, 0.4689, -0.8771, 0.9331]]) y = torch.transpose(x, 0, 1) print(y) # tensor([[ 2.0514, -1.3048, -0.5564], # [ 1.8634, 0.0905, 0.4689], # [-0.0375, 0.3555, -0.8771], # [-1.1761, 0.2998, 0.9331]]) z = torch.randn(2, 3, 4) print(z) # tensor([[[ 0.4673, 0.1136, -1.3368, -0.1990], # [-0.5333, 0.0768, -0.6232, -0.8085], # [-1.2438, 1.8073, -0.6008, -1.0195]], # # [[ 0.4232, -0.2118, 1.2122, 0.7345], # [-1.3797, -0.3909, -0.2965, -1.3328], # [-0.8473, -0.6902, 0.1941, -0.8746]]]) w = torch.transpose(z, 0, 1) print(w) # tensor([[[ 0.4673, 0.1136, -1.3368, -0.1990], # [ 0.4232, -0.2118, 1.2122, 0.7345]], # # [[-0.5333, 0.0768, -0.6232, -0.8085], # [-1.3797, -0.3909, -0.2965, -1.3328]], # # [[-1.2438, 1.8073, -0.6008, -1.0195], # [-0.8473, -0.6902, 0.1941, -0.8746]]]) ``` torch.permute() 函数可以对张量的任意维度进行重新排列,可以对任意维度的张量进行操作。例如: ``` import torch x = torch.randn(2, 3, 4) print(x) # tensor([[[-1.1819, 0.6551, 0.3769, -0.7894], # [ 0.2819, -0.5533, -0.2477, -0.8851], # [-0.6033, -1.4273, -0.2664, -0.5853]], # # [[-1.0286, -1.7711, -0.5401, 0.5417], # [-0.4733, 2.4179, 0.0829, 0.7627], # [-0.4668, 0.0573, 0.2071, -0.5846]]]) y = x.permute(2, 0, 1) print(y) # tensor([[[-1.1819, 0.2819, -0.6033], # [-1.0286, -0.4733, -0.4668]], # # [[ 0.6551, -0.5533, -1.4273], # [-1.7711, 2.4179, 0.0573]], # # [[ 0.3769, -0.2477, -0.2664], # [-0.5401, 0.0829, 0.2071]], # # [[-0.7894, -0.8851, -0.5853], # [ 0.5417, 0.7627, -0.5846]]]) ``` 可以看到,torch.permute() 函数可以对张量的任意维度进行重新排列,而 torch.transpose() 函数只能对二维和三维张量进行转置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值