在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()
contiguous()->Tensor
返回一个内存连续的有相同数据的tensor,如果原tensor内存连续,则返回原tensor
pytorch contiguous的使用
contiguous一般与transpose,permute,view搭配使用:使用transpose或permute进行维度变换后,调用contiguous,然后方可使用view对维度进行变形(如:tensor_var.contiguous().view() )