pytorch中torch.cat和torch.stack的區(qū)別小結(jié)
torch.cat 和 torch.stack 是 PyTorch 中用于組合張量的兩個(gè)常用函數(shù),它們的核心區(qū)別在于輸入張量的維度和輸出張量的維度變化。以下是詳細(xì)對(duì)比:
1.torch.cat (Concatenate)
作用:沿現(xiàn)有維度拼接多個(gè)張量,不創(chuàng)建新維度
輸入要求:所有張量的形狀必須除拼接維度外完全相同。
語法:
torch.cat(tensors, dim=0) # dim 指定拼接的維度
示例:
a = torch.tensor([[1, 2], [3, 4]]) # shape (2, 2) b = torch.tensor([[5, 6]]) # shape (1, 2) # 沿 dim=0 拼接(行方向) c = torch.cat([a, b], dim=0) print(c) # tensor([[1, 2], # [3, 4], # [5, 6]]) # shape (3, 2)
特點(diǎn):
- 拼接后的張量在指定維度上的大小是輸入張量該維度大小的總和。
- 其他維度必須完全一致。
2. torch.stack
作用:沿新維度堆疊多個(gè)張量,創(chuàng)建新維度。
輸入要求:所有張量的形狀必須完全相同。
語法:
torch.stack(tensors, dim=0) # dim 指定新維度的位置
示例:
a = torch.tensor([1, 2]) # shape (2,) b = torch.tensor([3, 4]) # shape (2,) # 沿新維度 dim=0 堆疊 c = torch.stack([a, b], dim=0) print(c) # tensor([[1, 2], # [3, 4]]) # shape (2, 2) # 沿新維度 dim=1 堆疊 d = torch.stack([a, b], dim=1) print(d) # tensor([[1, 3], # [2, 4]]) # shape (2, 2)
特點(diǎn):
- 輸出張量比輸入張量多一個(gè)維度。
- 適用于將多個(gè)相同形狀的張量合并為批次(如
batch_size維度)。
3. 關(guān)鍵區(qū)別總結(jié)

4. 直觀對(duì)比示例
假設(shè)有兩個(gè)張量:
x = torch.tensor([1, 2]) # shape (2,) y = torch.tensor([3, 4]) # shape (2,)
torch.cat 結(jié)果:
torch.cat([x, y], dim=0) # tensor([1, 2, 3, 4]), shape (4,)
torch.stack 結(jié)果:
torch.stack([x, y], dim=0) # tensor([[1, 2], [3, 4]]), shape (2, 2)
5. 如何選擇?
- 用
torch.cat當(dāng)需要擴(kuò)展現(xiàn)有維度(如拼接多個(gè)特征圖)。 - 用
torch.stack當(dāng)需要創(chuàng)建新維度(如構(gòu)建批次數(shù)據(jù)或堆疊不同模型的輸出)
通過理解兩者的維度變化邏輯,可以避免常見的形狀錯(cuò)誤(如 size mismatch)。
到此這篇關(guān)于pytorch中torch.cat和torch.stack的區(qū)別小結(jié)的文章就介紹到這了,更多相關(guān)pytorch torch.cat和torch.stack內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python基于plotly實(shí)現(xiàn)畫餅狀圖代碼實(shí)例
這篇文章主要介紹了python基于plotly實(shí)現(xiàn)畫餅狀圖代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
使用Python爬蟲庫BeautifulSoup遍歷文檔樹并對(duì)標(biāo)簽進(jìn)行操作詳解
今天為大家介紹下Python爬蟲庫BeautifulSoup遍歷文檔樹并對(duì)標(biāo)簽進(jìn)行操作的詳細(xì)方法與函數(shù)2020-01-01
Python原始字符串(raw strings)用法實(shí)例
這篇文章主要介紹了Python原始字符串(raw strings)用法實(shí)例,在使用Python進(jìn)行字符串處理的過程中非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10
python使用Windows的wmic命令監(jiān)控文件運(yùn)行狀況,如有異常發(fā)送郵件報(bào)警
這篇文章主要介紹了python使用Windows的wmic命令監(jiān)控文件運(yùn)行狀況,如有異常發(fā)送郵件報(bào)警的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-01-01
Python 實(shí)現(xiàn)王者榮耀中的敏感詞過濾示例
今天小編就為大家分享一篇Python 實(shí)現(xiàn)王者榮耀中的敏感詞過濾示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01
基于Python中capitalize()與title()的區(qū)別詳解
下面小編就為大家分享一篇基于Python中capitalize()與title()的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-12-12
PyQt5使用QtDesigner實(shí)現(xiàn)多界面切換程序的全過程
Pyqt5是Python中一個(gè)可視化超級(jí)好用的庫,下面這篇文章主要給大家介紹了關(guān)于PyQt5使用QtDesigner實(shí)現(xiàn)多界面切換程序的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06

