permute(dims),常用的維度轉換方法
將tensor的維度換位 參數:dim(int)---換位順序
>>>x = torch.randn(2,3,5) >>>x.size() torch.size([2,3,5]) >>>x.permute(2,0,1).size() torch.size([5,2,3])
contiguous()
contiguous:view只能用在contiguous的variable上。如果在view之前用了transpose, permute等,需要用contiguous()來返回一個contiguous copy。
一種可能的解釋是:
有些tensor並不是占用一整塊內存,而是由不同的數據塊組成,而tensor的view()
操作依賴於內存是整塊的,這時只需要執行contiguous()
這個函數,把tensor變成在內存中連續分布的形式。
判斷是否contiguous用torch.Tensor.is_contiguous()
函數。
import torch x = torch.ones(10, 10) x.is_contiguous() # True x.transpose(0, 1).is_contiguous() # False x.transpose(0, 1).contiguous().is_contiguous() # True
在pytorch的最新版本0.4版本中,增加了torch.reshape(), 這與 numpy.reshape 的功能類似。它大致相當於 tensor.contiguous().view()