pytorch 改變tensor尺寸的實現
阿新 • • 發佈:2020-01-09
改變Tensor尺寸的操作
1.tensor.view
tensor.view方法,可以調整tensor的形狀,但必須保證調整前後元素總數一致。view不會改變自身資料,返回的新的tensor與源tensor共享記憶體,即更改其中一個,另外一個也會跟著改變。
例:
In: import torch as t a = t.arange(0,6) a.view(2,3) Out:tensor([[0,1,2],[3,4,5]]) In: b = a.view(-1,3)#當某一維為-1的時候,會自動計算它的大小 Out:tensor([[0,5]])
2.tensor.unsqueeze 和 tensor.squeeze
tensor.unsqueeze 和 tensor.squeeze分別用於增加或減少tensor的某一維度。
例:
In: b.unsqueeze(1)#注意形狀, 在第1維(下標從0開始)上增加“1” Out:tensor([[[0,2]],[[3,5]]]) In: b.unsqueeze(-2) #-2表示倒數第二個維度 Out:tensor([[[0,5]]]) In: c = b.view(1,2,3) c.unsqueeze(0)#壓縮第0維的“1” Out:tensor([[[[[[0,5]]]]]]) In: c.squeeze() #把所有維度為“1”的壓縮 Out:tensor([[0,5]]) In:a[1] = 100 b #a和b共享記憶體,修改了a,b也變了 Out:tensor([[ 0,100,[ 3,5]])
3.tensor.resize
tensor.resize是另外一種可以調整tensor尺寸的方法,但與view不同,它可以修改tensor的尺寸。如果新尺寸超過了原尺寸,會自動分配新的記憶體空間;如果新尺寸小於原尺寸,則之前的資料依舊會儲存
例:
In: b.resize_(1,3) Out:tensor([[ 0,2]]) In: b.resize_(3,3)#舊的資料依舊儲存著,多出的資料會分配新空間 Out:tensor([[ 0,[ 3,5],[ 0,2323344073926471279]])
以上這篇pytorch 改變tensor尺寸的實現就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。