pytorch中torch.stack()函數(shù)用法解讀
torch.stack()函數(shù)用法
一、基本功能
pytroch官方文檔對于這個函數(shù)的描述很簡略。
只有一句話:
在維度上連接(concatenate)若干個張量。(這些張量形狀相同)。
經過代碼總結歸納,可以得到stack(tensors,dim=0,out=None)函數(shù)的功能:
將若干個張量在dim維度上連接,生成一個擴維的張量,比如說原來你有若干個2維張量,連接可以得到一個3維的張量。
設待連接張量維度為n,dim取值范圍為-n-1~n,這里得提一下為負的意義:-i為倒數(shù)第i個維度。
舉個例子:
對于2維的待連接張量,-1維即3維,-2維即2維。
上代碼:
a=torch.tensor([[1,2,3],[4,5,6]])
b=torch.tensor([[10,20,30],[40,50,60]])
c=torch.tensor([[100,200,300],[400,500,600]])
print(torch.stack([a,b,c],dim=0))
print(torch.stack([a,b,c],dim=1))
print(torch.stack([a,b,c],dim=2))
print(torch.stack([a,b,c],dim=0).size())
print(torch.stack([a,b,c],dim=1).size())
print(torch.stack([a,b,c],dim=2).size())
#輸出結果為:
tensor([[[ 1, 2, 3],
[ 4, 5, 6]],
[[ 10, 20, 30],
[ 40, 50, 60]],
[[100, 200, 300],
[400, 500, 600]]])
tensor([[[ 1, 2, 3],
[ 10, 20, 30],
[100, 200, 300]],
[[ 4, 5, 6],
[ 40, 50, 60],
[400, 500, 600]]])
tensor([[[ 1, 10, 100],
[ 2, 20, 200],
[ 3, 30, 300]],
[[ 4, 40, 400],
[ 5, 50, 500],
[ 6, 60, 600]]])
torch.Size([3, 2, 3])
torch.Size([2, 3, 3])
torch.Size([2, 3, 3])
二、規(guī)律分析
通過代碼運行結果,我們不難發(fā)現(xiàn),stack(tensors,dim=0,out=None)函數(shù)的運行機制可以等價為:
- dim=0時,將tensor在一維上連接,簡單來說就是,就是將tensor1,tensor2…tensor n,連接為【tensor1,tensor2… tensor n】(就是在這里產生了擴維)
- dim=1時,將每個tensor的第i行按行連接組成一個新的2維tensor,再將這些新tensor按照dim=0的方式連接。
- dim=2時,將每個tensor的第i行轉置后按列連接組成一個新的2維tensor,再將這些新tesnor按照dim=0的方式連接
可以得到一個結論:n維(n>=2)待連接張量按dim=x的方式連接等價于:
- 若x=0,參照上面的規(guī)律進行連接
- 若x>0,對每個張量的第一個維度下的張量對應地按照dim=x-1的方式進行連接得到若干個新張量,這些新張量按照dim=0的方式進行連接。
- 很明顯,該規(guī)律具有遞歸的特性,x=0,1,2的基礎情況已經給出。
注:以上規(guī)律是在未看函數(shù)實現(xiàn)源碼基礎上未加證明的猜測。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python Paramiko創(chuàng)建文件目錄并上傳文件詳解
Paramiko是一個用于進行SSH2會話的Python庫,它支持加密、認證和文件傳輸?shù)裙δ?本文旨在詳細指導新手朋友如何使用Python的Paramiko庫來創(chuàng)建遠程文件目錄并上傳文件,希望對大家有所幫助2024-10-10
使用Python編寫一個在Linux下實現(xiàn)截圖分享的腳本的教程
這篇文章主要介紹了使用Python編寫一個在Linux下實現(xiàn)截圖分享的腳本的教程,利用到了scrot和urllib2庫,需要的朋友可以參考下2015-04-04
15個應該掌握的Jupyter Notebook使用技巧(小結)
這篇文章主要介紹了15個應該掌握的Jupyter Notebook使用技巧(小結),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09

