PyTorch中view的用法

相當於numpy中resize()的功能,但是用法可能不太一樣。

我的理解是:

把原先tensor中的數據按照行優先的順序排成一個一維的數據(這裡應該是因為要求地址是連續存儲的),然後按照參數組合成其他維度的tensor。比如說是不管你原先的數據是[[[1,2,3],[4,5,6]]]還是[1,2,3,4,5,6],因為它們排成一維向量都是6個元素,所以只要view後面的參數一致,得到的結果都是一樣的。比如,

a=torch.Tensor([[[1,2,3],[4,5,6]]])  b=torch.Tensor([1,2,3,4,5,6])  print(a.view(1,6))  print(b.view(1,6))

得到的結果都是tensor([[1., 2., 3., 4., 5., 6.]]) 

再看一個例子:

a=torch.Tensor([[[1,2,3],[4,5,6]]])  print(a.view(3,2))

將會得到:

tensor([[1., 2.],         [3., 4.],         [5., 6.]])

相當於就是從1,2,3,4,5,6順序的拿數組來填充需要的形狀。但是如果您想得到如下的結果:

tensor([[1., 4.],         [2., 5.],         [3., 6.]])