【pytorch】tensor的操作
转置 transpose和permute
对二维矩阵来说,转置就是把矩阵的行列互换 也就是原来是 X [ i ] [ j ] X[i][j] X[i][j]转置后变成 X [ j ] [ i ] X[j][i] X[j][i]
torch.transpose
transpose函数介绍
torch.transpose(input, dim0, dim1) → Tensor
transpose就是把input 的第dim0维和dim1维进行交换
- input (Tensor) – the input tensor.
- dim0 (int) – the first dimension to be transposed
- dim1 (int) – the second dimension to be transposed
transpose两种调用方式
对x的第0维和第1维进行转置
torch.transpose(x,0,1)
或x.transpose(0,1)
连续使用transpose实现高维矩阵转置
transpose只能对两个维度进行转置,那么高维矩阵的维度大于2,如果想进行高维矩阵的转置,我们可以连续使用transpose,如下:
我们创建一个2x3x2x2的tensor,然后
import torch
x = torch.randn(2,3,2,2) #创建一个2x3x2x2的tensor
y = x.transpose(1,2).transpose(2,3) #先对tensor的第一维和第二维转置则tensor的shape变为(2,2,3,2)
#再对tensor的第二维和第三维转置则tensor的shape变为(2,2,2,3)
/*
转置前x:
tensor([[[[ 0.7113, 1.0002],
[ 0.1047, -1.8522]],
[[ 0.8429, -0.5547],
[ 0.3536, 0.1121]],
[[ 0.9539, 0.7841],
[-0.0667, 0.6173]]],
[[[ 0.6009, 0.6388],
[-0.0523, -0.5926]],
[[ 0.9110, 1.8832],
[-0.8734, -1.9924]],
[[-1.2680, -0.3895]