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)建新維度
輸入要求:所有張量的形狀必須除拼接維度外完全相同。
語(yǔ)法:
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)建新維度。
輸入要求:所有張量的形狀必須完全相同。
語(yǔ)法:
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ù)或堆疊不同模型的輸出)
通過(guò)理解兩者的維度變化邏輯,可以避免常見(jiàn)的形狀錯(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)文章
python3+PyQt5重新實(shí)現(xiàn)QT事件處理程序
這篇文章主要為大家詳細(xì)介紹了python3+PyQt5重新實(shí)現(xiàn)QT事件處理程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
Python使用PyMySql增刪改查Mysql數(shù)據(jù)庫(kù)的實(shí)現(xiàn)
PyMysql是Python中用于連接MySQL數(shù)據(jù)庫(kù)的一個(gè)第三方庫(kù),本文主要介紹了Python使用PyMySql增刪改查Mysql數(shù)據(jù)庫(kù)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
舉例講解Python中的算數(shù)運(yùn)算符的用法
這篇文章主要介紹了舉例講解Python中的算數(shù)運(yùn)算符的用法,是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05
python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5表格控件QTableView詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5表格控件QTableView詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-03-03
python文件讀寫并使用mysql批量插入示例分享(python操作mysql)
這篇文章主要介紹了python文件讀寫并使用mysql批量插入示例,可以學(xué)習(xí)到python操作mysql數(shù)據(jù)庫(kù)的方法,需要的朋友可以參考下2014-02-02
Python selenium如何設(shè)置等待時(shí)間
這篇文章主要為大家詳細(xì)介紹了Python selenium如何設(shè)置等待時(shí)間,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
python使用在線API查詢IP對(duì)應(yīng)的地理位置信息實(shí)例
這篇文章主要介紹了python使用在線API查詢IP對(duì)應(yīng)的地理位置信息實(shí)例,需要的朋友可以參考下2014-06-06
numpy使用fromstring創(chuàng)建矩陣的實(shí)例
今天小編就為大家分享一篇numpy使用fromstring創(chuàng)建矩陣的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
spark dataframe 將一列展開(kāi),把該列所有值都變成新列的方法
今天小編就為大家分享一篇spark dataframe 將一列展開(kāi),把該列所有值都變成新列的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01

