pytorch中 transpose()和permute()和view()的使用

permute 介绍:
permute():一次性做任意维度的交换,三个变量的赋值分别问0,1,2
举例:

torch.size([3,4,6]) # 这里对应的permute(0,1,2)

torch.permute(1,0,2)

>>> torch.size([4,3,6])

torch.transpose 介绍:
torch.transpose()和torch.permute()两者作用相似,都是用于交换不同维度的内容。但其中torch.transpose()是只交换指定的两个维度的内容permute()则可以一次性交换多个维度
当矩阵是2维时,我们可以把transpose理解为转置。

>>> x = torch.randn(2, 3) # 随机生成(2,3)的矩阵
>>> x
tensor([[ 1.0028, -0.9893,  0.5809],
        [-0.1669,  0.7299,  0.4942]])
        
>>> torch.transpose(x, 0, 1) # 交换x的第0维和第1维.第0维跑到第1维的位置,第1维跑到第0维的位置

tensor([[ 1.0028, -0.1669],
        [-0.9893,  0.7299],
        [ 0.5809,  0.4942]])

view()
view():view是将数据按照你设定的方式排列

torch.size([2,3,5])

torch.view(2,5,3)

则变成torch.size([2,5,3])

view()还支持自动计算一个维度的数量。只需要在想要自动计算的维度填上-1即可。

import torch

a1 = torch.randn([3,4,2]) 
print(a1.shape) # 输出结果:torch.Size([3, 4, 2])
a2 =a1.view(-1,2,6)
print(a2.shape) # 输出结果:torch.Size([2, 2, 6])

你可能感兴趣的:(科研日常,笔记,学习生活,pytorch,深度学习,人工智能)