在PyTorch中view函數(shù)作用為重構(gòu)張量的維度海雪,相當于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×剩現(xiàn)在通過view可以將其重構(gòu)一下形狀栓霜。
result=tt1.view(3,2)
result
tensor([[-0.3623, -0.6115],
[ 0.7283, 0.4699],
[ 2.3261, 0.1599]])
torch.view(參數(shù)a,參數(shù)b,.....),其中參數(shù)a=3,參數(shù)b=2決定了將一維的tt1重構(gòu)成3*2維的張量苟蹈。
有時候會出現(xiàn)torch.view(-1)或者torch.view(參數(shù)a,-1)這種情況糊渊。則-1參數(shù)是需要估算的。
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()
contiguous()->Tensor
返回一個內(nèi)存連續(xù)的有相同數(shù)據(jù)的tensor慧脱,如果原tensor內(nèi)存連續(xù)再来,則返回原tensor
pytorch contiguous的使用
contiguous一般與transpose,permute磷瘤,view搭配使用:使用transpose或permute進行維度變換后芒篷,調(diào)用contiguous,然后方可使用view對維度進行變形(如:tensor_var.contiguous().view() )