torch.stack()的使用


 


廢話不多說直接上圖

 

 

 

如圖有a, b, c 三個 3x3的Tensor,

如果我想把這三個tensor的最后一個維度的元素相疊加,形成一個新的tensor

輸入 d=torch.stack( (a,b,c) ,dim = 2)

 

 

 

就會發現他們在第二個維度像疊加,具體來說變化如下圖所示

 

 

 

d[0][0]的位置是由a[0][0]  的 [1]   , b[0][0] 的 [10],  c[0][0] 的 [100] ,這3個 元素疊加構成的一個size為3的新的元素[1,10,100]

所以d的維度就是3 * 3  *3

這里注意dim參數!!!!!!!

雖然他們是在第二個維度相疊加,(pytorch中從0開始計數,所以也就是第一個維度是dim=0,第二個維度是dim=1)

但是我在stack函數中寫的dim卻是 dim=2,也即第三個維度,這是說我們最終的生成結果位於第三個維度,而不是說

原來的元素是第三個維度。

所以還有另外一種寫法,寫dim=-1,不管你原來是啥,我就指定最后一個維度

 

 

 

得到的結果和我一開始寫dim=2是一樣

 

再補充一個例子讓各位感受一下這個dim參數的意義把,它指定的是做完stack后的元素結果所在的那個維度,

dim分別設置為0 ,1,2  注意觀察結果

 

 

 

 

 

稍微分析一波?

c, dim = 0時, c = [ a, b]

d, dim =1 時, d = [ [a[0] , b[0] ] , [a[1], b[1] ] ]

e, dim = 2 時, e = [     [   [ a[0][0], b[0][0] ]  , [ a[0][1], b[0][1] ]  ,  [ a[0][2],b[0][2] ] ] ,

                                      [   [ a[1][0], b[1][0] ]  , [ a[1][1], b[0][1] ]  ,  [ a[1][2],b[1][2] ] ]      ]
————————————————
版權聲明:本文為CSDN博主「Teeyohuang」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Teeyohuang/article/details/80362756


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM