Pytorch张量转置维度该怎么写?

今天在看代码时发现torch里的转置参数写成

transpose(1, 0)

transpose(0, 1)

结果是一样的

即:

import torch
x = torch.randn(3, 2)
print(x.transpose(1, 0).shape)
print(x.transpose(0, 1).shape)
# 运行结果
# torch.Size([2, 3])
# torch.Size([2, 3])

当时我就不理解,当时的思维定势是觉得print(x.transpose(0, 1).shape)结果应该是没对张量进行操作时的形状,后来经过实验才发现,这个参数只能传入两个,就是这两个维度互换位置

接着,我又进行了别的实验,比如三维张量

import torch
x = torch.randn(3, 2, 4)
print(x.transpose(2, 0).shape)
print(x.transpose(0, 2).shape)
# 运行结果
# torch.Size([4, 2, 3])
# torch.Size([4, 2, 3])

我又看了numpy里的transpose函数,其用法和上面的transpose有点区别,对比着写了测试代码如下:

import numpy as np
import torch
x = torch.randn(3, 2, 4)
print(x.transpose(2, 1).shape)
print(x.transpose(1, 2).shape)
print(np.transpose(x, [2, 0, 1]).shape)
print(np.transpose(x, [0, 2, 1]).shape)
print(np.transpose(x, [0, 1, 2]).shape)
# 运行结果
# torch.Size([3, 4, 2])
# torch.Size([3, 4, 2])
# torch.Size([4, 3, 2])
# torch.Size([3, 4, 2])
# torch.Size([3, 2, 4])

以上仅为个人学习记录,若有理解不当之处,欢迎批评指正!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码的女朋友

你的鼓励是我继续创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值