PyTorch的torch.cat用法
1. 字面理解:
torch.cat是將兩個張量(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])
上面給出了兩個張量A和B,分別是2行3列,4行3列。即他們都是2維張量。因為只有兩維,這樣在用torch.cat拼接的時候就有兩種拼接方式:按行拼接和按列拼接。即所謂的維數(shù)0和維數(shù)1.
C=torch.cat((A,B),0)就表示按維數(shù)0(行)拼接A和B,也就是豎著拼接,A上B下。此時需要注意:列數(shù)必須一致,即維數(shù)1數(shù)值要相同,這里都是3列,方能列對齊。拼接后的C的第0維是兩個維數(shù)0數(shù)值和,即2+4=6.
C=torch.cat((A,B),1)就表示按維數(shù)1(列)拼接A和B,也就是橫著拼接,A左B右。此時需要注意:行數(shù)必須一致,即維數(shù)0數(shù)值要相同,這里都是2行,方能行對齊。拼接后的C的第1維是兩個維數(shù)1數(shù)值和,即3+4=7.
從2維例子可以看出,使用torch.cat((A,B),dim)時,除拼接維數(shù)dim數(shù)值可不同外其余維數(shù)數(shù)值需相同,方能對齊。
3.實例
在深度學(xué)習(xí)處理圖像時,常用的有3通道的RGB彩色圖像及單通道的灰度圖。張量size為cxhxw,即通道數(shù)x圖像高度x圖像寬度。在用torch.cat拼接兩張圖像時一般要求圖像大小一致而通道數(shù)可不一致,即h和w同,c可不同。當(dāng)然實際有3種拼接方式,另兩種好像不常見。比如經(jīng)典網(wǎng)絡(luò)結(jié)構(gòu):U-Net
里面用到4次torch.cat,其中copy and crop操作就是通過torch.cat來實現(xiàn)的??梢钥吹酵ㄟ^上采樣(up-conv 2x2)將原始圖像h和w變?yōu)樵瓉?倍,再和左邊直接copy過來的同樣h,w的圖像拼接。這樣做,可以有效利用原始結(jié)構(gòu)信息。
4.總結(jié)
使用torch.cat((A,B),dim)時,除拼接維數(shù)dim數(shù)值可不同外其余維數(shù)數(shù)值需相同,方能對齊。
補充知識:PyTorch的concat也就是torch.cat實例
我就廢話不多說了,大家還是直接看代碼吧~
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)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python打工人必備之windows倒計時鎖屏功能的實現(xiàn)
每個人的電腦里都會有不想讓別人知道的隱私,或者是上班時間偷偷摸魚怕被發(fā)現(xiàn)的小秘密。那怎么辦?就干脆把隱私鎖起來!從源頭上杜絕被他人偷窺自己的隱私。本文就來用Python實現(xiàn)一個windows倒計時鎖屏功能,需要的可以參考一下2023-04-04PyTorch里面的torch.nn.Parameter()詳解
今天小編就為大家分享一篇PyTorch里面的torch.nn.Parameter()詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python實現(xiàn)校園網(wǎng)自動登錄的腳本分享
這篇文章主要和大家分享一個Python腳本,leukemia實現(xiàn)校園網(wǎng)自動登錄功能。文中的示例代碼簡潔易懂,快跟隨小編一起動手嘗試一下吧2022-06-06python入門課程第四講之內(nèi)置數(shù)據(jù)類型有哪些
這篇文章主要介紹了python入門課程第四講之內(nèi)置數(shù)據(jù)類型有哪些?本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09