廢話不多說直接上圖
如圖有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