pytorch 張量重構view

2021-10-19 12:19:40 字數 1096 閱讀 5351

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 設定張量的預設資...