相當於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.]])
就需要使用另乙個函式了:permute()。用法參見我的另一篇部落格:pytorch中permute的用法
另外,引數不可為空。引數中的-1就代表這個位置由其他位置的數字來推斷,只要在不致歧義的情況的下,view引數就可以推斷出來,也就是人可以推斷出形狀的情況下,view函式也可以推斷出來。比如a tensor的資料個數是6個,如果view(1,-1),我們就可以根據tensor的元素個數推斷出-1代表6。而如果是view(-1,-1,2),人不知道怎麼推斷,機器也不知道。還有一種情況是人可以推斷出來,但是機器推斷不出來的:view(-1,-1,6),人可以知道-1都代表1,但是機器不允許同時有兩個負1。
PyTorch中view的用法
相當於numpy中resize 的功能,但是用法可能不太一樣。我的理解是 把原先tensor中的資料按照行優先的順序排成乙個一維的資料 這裡應該是因為要求位址是連續儲存的 然後按照引數組合成其他維度的tensor。比如說是不管你原先的資料是 1,2,3 4,5,6 還是 1,2,3,4,5,6 因為...
PyTorch中view的用法
相當於numpy中resize 的功能,但是用法可能不太一樣。我的理解是 把原先tensor中的資料按照行優先的順序排成乙個一維的資料 這裡應該是因為要求位址是連續儲存的 然後按照引數組合成其他維度的tensor。比如說是不管你原先的資料是 1,2,3 4,5,6 還是 1,2,3,4,5,6 因為...
Pytorch中view的用法
在pytorch中view函式的作用為重構張量的維度,相當於numpy中resize 的功能,但是用法可能不太一樣。如下例所示 import torch tt1 torch.tensor 0.3623,0.6115,0.7283,0.4699,2.3261,0.1599 result tt1.vie...