這篇文章主要介紹“Pytorch中expand()如何使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Pytorch中expand()如何使用”文章能幫助大家解決問題。
有兩點需要注意,無論是 expand() 還是 expand_as():
1.只能在第0維擴展一個維數,比如原來是是(1,3,4)==》(2,1,3,4),而在其他維度擴展不可以(1,3,4)==》(1,2,3,4)【錯誤】
2.如果不增加維數,只是增加維度,要增加的原維度必須是1才可以在該維度增加維度,其他值均不可以
import torch #1 x = torch.randn(2, 1, 1)#為1可以擴展為3和4 x = x.expand(2, 3, 4) print('x :', x.size()) >>> x : torch.Size([2, 3, 4]) #2 #擴展一個新的維度必須在最前面,否則會報錯 x = x.expand(2, 3, 4, 6) >>> RuntimeError: The expanded size of the tensor (3) must match the existing size (2) at non-singleton dimension 1. x = x.expand(6, 2, 3, 4) >>> x : torch.Size([6, 2, 3, 4]) #3 #某一個維度為-1表示不改變該維度的大小 x = x.expand(6, -1, -1, -1) >>> x : torch.Size([6, 2, 1, 1])
import torch #1 x = torch.randn(2, 1, 1)#原維度為1可以擴展為其他維度 y = torch.randn(2, 3, 3) x = x.expand_as(y) print('x :', x.size()) >>> x : torch.Size([2, 3, 3]) #2 x = torch.randn(2, 2, 2)#原維度為其他不是1的值不可以擴展為其他維度 y = torch.randn(2, 3, 4) x = x.expand_as(y) print('x :', x.size()) >>> RuntimeError: The expanded size of the tensor (4) must match the existing size (2) at non-singleton dimension 2. Target sizes: [2, 3, 4].
單個維度擴大為更大的尺寸。
tensor也可以擴大為更高維,新增加的維度將附在前面。
擴大tensor不需要分配新內存,只是僅僅新建一個tensor的視圖,其中通過將stride設為0,一維將會擴展位更高維。
任何一個一維的在不分配新內存情況下可擴展為任意的數值。
x自身不會改變,因此需要將結果重新賦值。
關于“Pytorch中expand()如何使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。