在pytorch中view函式作用為重構張量的維度,相當於numpy中的resize()的功能,但是用法不太一樣
import torch
tt1=torch.tensor(
[-0.3623,-0.6115,0.7283,0.4699,2.3261,0.1599]
)
則tt1.size()
為torch.size([6])
,是乙個一行的tensor
。現在通過view
可以將其重構一下形狀。
result=tt1.view(3,2)
result
tensor(
[[-0.3623, -0.6115],
[ 0.7283, 0.4699],
[ 2.3261, 0.1599]
])
torch.view(引數a,引數b,…),其中引數a=3,引數b=2決定了將一維的tt1重構成3*2維的張量。
有時候會出現torch.view(-1)或者torch.view(引數a,-1)這種情況。則-1引數是需要估算的。
import torch
tt3=torch.tensor(
[[-0.3623,-0.6115],[0.7283,0.4699],[2.3261,0.1599]])
result2=tt3.view(2,-1).contiguous(
)
則result2
為
tensor(
[[-0.3623, -0.6115, 0.7283],
[ 0.4699, 2.3261, 0.1599]
])
其中contiguous()
返回乙個記憶體連續的有相同資料的tensor
,如果原tensor
記憶體連續,則返回原tensor
contiguous
一般與transpose
,permute
,view
搭配使用:使用transpose
或permute
進行維度變換後,呼叫contiguous
,然後方可使用view
對維度進行變形(如:tensor_var.contiguous().view()
)
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...