PyTorch的torch.cat用法
1. 字面理解:
torch.cat是將兩個(gè)張量(tensor)拼接在一起,cat是concatnate的意思,即拼接,聯(lián)系在一起。
2. 例子理解
>>> import torch
>>> A=torch.ones(2,3) #2x3的張量(矩陣)
>>> A
tensor([[ 1., 1., 1.],
[ 1., 1., 1.]])
>>> B=2*torch.ones(4,3)#4x3的張量(矩陣)
>>> B
tensor([[ 2., 2., 2.],
[ 2., 2., 2.],
[ 2., 2., 2.],
[ 2., 2., 2.]])
>>> C=torch.cat((A,B),0)#按維數(shù)0(行)拼接
>>> C
tensor([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 2., 2., 2.],
[ 2., 2., 2.],
[ 2., 2., 2.],
[ 2., 2., 2.]])
>>> C.size()
torch.Size([6, 3])
>>> D=2*torch.ones(2,4) #2x4的張量(矩陣)
>>> C=torch.cat((A,D),1)#按維數(shù)1(列)拼接
>>> C
tensor([[ 1., 1., 1., 2., 2., 2., 2.],
[ 1., 1., 1., 2., 2., 2., 2.]])
>>> C.size()
torch.Size([2, 7])
上面給出了兩個(gè)張量A和B,分別是2行3列,4行3列。即他們都是2維張量。因?yàn)橹挥袃删S,這樣在用torch.cat拼接的時(shí)候就有兩種拼接方式:按行拼接和按列拼接。即所謂的維數(shù)0和維數(shù)1.
C=torch.cat((A,B),0)就表示按維數(shù)0(行)拼接A和B,也就是豎著拼接,A上B下。此時(shí)需要注意:列數(shù)必須一致,即維數(shù)1數(shù)值要相同,這里都是3列,方能列對齊。拼接后的C的第0維是兩個(gè)維數(shù)0數(shù)值和,即2+4=6.
C=torch.cat((A,B),1)就表示按維數(shù)1(列)拼接A和B,也就是橫著拼接,A左B右。此時(shí)需要注意:行數(shù)必須一致,即維數(shù)0數(shù)值要相同,這里都是2行,方能行對齊。拼接后的C的第1維是兩個(gè)維數(shù)1數(shù)值和,即3+4=7.
從2維例子可以看出,使用torch.cat((A,B),dim)時(shí),除拼接維數(shù)dim數(shù)值可不同外其余維數(shù)數(shù)值需相同,方能對齊。
3.實(shí)例
在深度學(xué)習(xí)處理圖像時(shí),常用的有3通道的RGB彩色圖像及單通道的灰度圖。張量size為cxhxw,即通道數(shù)x圖像高度x圖像寬度。在用torch.cat拼接兩張圖像時(shí)一般要求圖像大小一致而通道數(shù)可不一致,即h和w同,c可不同。當(dāng)然實(shí)際有3種拼接方式,另兩種好像不常見。比如經(jīng)典網(wǎng)絡(luò)結(jié)構(gòu):U-Net

里面用到4次torch.cat,其中copy and crop操作就是通過torch.cat來實(shí)現(xiàn)的。可以看到通過上采樣(up-conv 2x2)將原始圖像h和w變?yōu)樵瓉?倍,再和左邊直接copy過來的同樣h,w的圖像拼接。這樣做,可以有效利用原始結(jié)構(gòu)信息。
4.總結(jié)
使用torch.cat((A,B),dim)時(shí),除拼接維數(shù)dim數(shù)值可不同外其余維數(shù)數(shù)值需相同,方能對齊。
補(bǔ)充知識:PyTorch的concat也就是torch.cat實(shí)例
我就廢話不多說了,大家還是直接看代碼吧~
import torch a = torch.ones([1,2]) b = torch.ones([1,2]) torch.cat([a,b],1) 1 1 1 1 [torch.FloatTensor of size 1x4]
以上這篇PyTorch的torch.cat用法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Django模板導(dǎo)入母版繼承和自定義返回Html片段過程解析
這篇文章主要介紹了Django模板導(dǎo)入母版繼承和自定義返回Html片段過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
Python編寫一個(gè)驗(yàn)證碼圖片數(shù)據(jù)標(biāo)注GUI程序附源碼
這篇文章主要介紹了Python編寫一個(gè)驗(yàn)證碼圖片數(shù)據(jù)標(biāo)注GUI程序,本文給大家附上小編精心整理的源碼,需要的朋友可以參考下2019-12-12
Python判斷一個(gè)list中是否包含另一個(gè)list全部元素的方法分析
這篇文章主要介紹了Python判斷一個(gè)list中是否包含另一個(gè)list全部元素的方法,結(jié)合實(shí)例形式對比分析了Python針對列表list元素包含關(guān)系的相關(guān)轉(zhuǎn)換、判斷操作技巧,需要的朋友可以參考下2018-12-12
Django對數(shù)據(jù)庫進(jìn)行添加與更新的例子
今天小編就為大家分享一篇Django對數(shù)據(jù)庫進(jìn)行添加與更新的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
Python實(shí)現(xiàn)Kerberos用戶的增刪改查操作
這篇文章主要介紹了Python實(shí)現(xiàn)Kerberos用戶的增刪改查操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
Python項(xiàng)目目錄找不到.git文件怎么刪除
這篇文章主要介紹了Python項(xiàng)目目錄找不到.git文件怎么刪除的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06

