PyTorch中view的用法
- 2020 年 4 月 1 日
- 筆記
相當於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.]])