permute(),适合多维数据。可以灵活的对原数据的维度进行调换,而数据本身不变。
view() 把原先tensor中的数据按照行优先的顺序排成一个一维的数据(这里应该是因为要求地址是连续存储的),然后按照参数组合成其他维度的tensor。比如说是不管你原先的数据是[[[1,2,3],[4,5,6]]]还是[1,2,3,4,5,6],因为它们排成一维向量都是6个元素,所以只要view后面的参数一致,得到的结果都是一样的。
import torch
a = torch.tensor([[1,2,3],[4,5,6]])
print(a,a.size())
print(a.view(3,2))
print(a.permute(1,0))
b = torch.tensor([1,2,3,4,5,6])
# view之后的tensor不一定与之前的tensor的维度数一样
print(b.view(3,2))
tensor([[1, 2, 3],
[4, 5, 6]]) torch.Size([2, 3])
tensor([[1, 2],
[3, 4],
[5, 6]])
tensor([[1, 4],
[2, 5],
[3, 6]])
tensor([[1, 2],
[3, 4],
[5, 6]])
permute函数传入的是维度,view函数传入的是维度上的维数。