torch中的torch.view() torch.permute()和 torch.transpose()以及numpy中的numpy.random.permutation()

直入主题:

1.torch.view()是先把所有的Tensor()变成一维数据,然后按需(数据的维度)索取。举个例子

torch中的torch.view() torch.permute()和 torch.transpose()以及numpy中的numpy.random.permutation()

如果参数中出现-1值,那么这个位置的数据就要按照其他位置来判断了。比如上述例子中,

torch中的torch.view() torch.permute()和 torch.transpose()以及numpy中的numpy.random.permutation()

这个-1的值是4,是由其他位置(这里是2)计算得来的,只要保证数据的数量一致就可以。

2.torch.permute()

相比之下permute()的理解要稍微复杂一点。

其作用是把原来Tensor的维数重置,取用的方式稍微复杂一点。举个例子:

torch中的torch.view() torch.permute()和 torch.transpose()以及numpy中的numpy.random.permutation()

a是一个1×2×3的Tensor,1是a的第0维,2是a的第1维,3是a的第2维,permute()的作用就是重置这些维数。比如上述例子中就把第0维还是放在第0维,把原来的第2维放到现在的第一维,把原来的第一维放到现在的第二维,也就是我们希望b的维数是1×3×2。

但其选取数据的方式是,每一个最小的单位抽取一个数据出来,得到满足要求的维数。

3.torch.transpose(dim1,dim2)

此函数的参数有两个,表示交换这两维。举个例子:

torch中的torch.view() torch.permute()和 torch.transpose()以及numpy中的numpy.random.permutation()

4.numpy.random.permutation(x)

(以下摘自官方文档numpy.org)

  1)若x是int数据,则返回range(x)随机排列的数列

torch中的torch.view() torch.permute()和 torch.transpose()以及numpy中的numpy.random.permutation()

2)若x是array数组,那么只打乱第一维数据(以a为例,a原来是3×4的数组,打乱第一维之后结果如下 第二维次序一点没变)

torch中的torch.view() torch.permute()和 torch.transpose()以及numpy中的numpy.random.permutation()