view在pytorch中是用來改變張量的shape的,簡單又好用。
pytorch中view的用法通常是直接在張量名後用.view呼叫,然後放入自己想要的shape。如
tensor_name.view(shape)
example:
1. 直接用法:
>>> x = torch.randn(4, 4)
>>> x.size()
torch.size([4, 4])
>>> y = x.view(16)
>>> y.size()
torch.size([16])
2. 強調某一維度的尺寸:
>>> z = x.view(-1, 8) # the size -1 is inferred from other dimensions
>>> z.size()
torch.size([2, 8])
3. 拉直張量:(直接填-1表示拉直, 等價於tensor_name.flatten())
>>> y = x.view(-1)
>>> y.size()
torch.size([16])
4. 做維度變換時不改變記憶體排列
>>> a = torch.randn(1, 2, 3, 4)
>>> a.size()
torch.size([1, 2, 3, 4])
>>> b = a.transpose(1, 2) # swaps 2nd and 3rd dimension
>>> b.size()
torch.size([1, 3, 2, 4])
>>> c = a.view(1, 3, 2, 4) # does not change tensor layout in memory
>>> c.size()
torch.size([1, 3, 2, 4])
>>> torch.equal(b, c)
false
注意最後的false,在張量b和c是不等價的。從這裡我們可以看得出來,view函式如其名,只改變「看起來」的樣子,不會改變張量在記憶體中的排列。
pytorch 張量 張量的生成
張量的生成 import torch import numpy as np 使用tensor.tensor 函式構造張量 a torch.tensor 1.0,1.0 2.2 print a 獲取張量的維度 print 張量的維度 a.shape 獲取張量的形狀大小 print 張量的大小 a.si...
pytorch張量追蹤
torch.tensor 是這個包的核心類。如果設定它的屬性 requires grad 為 true,那麼它將會追蹤對於該張量的所有操作。當完成計算後可以通過呼叫 backward 來自動計算所有的梯度。這個張量的所有梯度將會自動累加到.grad屬性.要阻止乙個張量被跟蹤歷史,可以呼叫 detac...
pytorch 張量 張量的資料型別
張量定義 import torch torch.tensor 1.2 3.4 dtype 獲取張量的資料型別,其中torch.tensor 函式生成乙個張量 torch.float32 torch.set default tensor type torch.doubletensor 設定張量的預設資...