1. 程式人生 > 程式設計 >pytorch 改變tensor尺寸的實現

pytorch 改變tensor尺寸的實現

改變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尺寸的實現就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。