PyTorch中view的用法

2022-07-30 13:00:14 字數 1288 閱讀 9730

我的理解就是將原來的tensor在進行維度的更改(根據引數的輸入進行更改)後再進行輸出,其實就是更換了tensor的一種檢視方式

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.]])

但是要注意原來的tensor與新的tensor是共享記憶體的,也就是說對其中的乙個tensor進行更改的話,另外乙個tensor也會自動進行相應的修改。

那麼如果想生成不共享記憶體的tensor要怎麼做呢?

應該使用clone()函式轉殖和再進行view(),而且使⽤ clone 還有⼀個好處是會被記錄在計算圖中,即梯度回傳到副本時也會傳到源 tensor 。

x_cp = x.clone().view(15)x -= 1

print

(x)print(x_cp)

輸出的結果:

tensor([[ 0.6035, 0.8110, -0.0451],

[ 0.8797, 1.0482, -0.0445],

[-0.7229, 2.8663, -0.5655],

[ 0.1604, -0.0254, 1.0739],

[ 2.2628, -0.9175, -0.2251]])

tensor([1.6035, 1.8110, 0.9549, 1.8797, 2.0482, 0.9555, 0.2771,

3.8663, 0.4345,

1.1604, 0.9746, 2.0739, 3.2628, 0.0825, 0.7749])

注意:有的是這樣使用的

x.view(4, -1)

其中的-1是表示你不確定這裡的維數是多少,但是你確定前面的行數是3,讓系統自動調整

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...