NJU1healer的个人博客分享 http://blog.sciencenet.cn/u/NJU1healer

博文

PyTorch的torch.cat

已有 3157 次阅读 2020-10-29 19:56 |个人分类:Pytorch|系统分类:科研笔记

1. 字面理解:torch.cat是将两个张量(tensor)拼接在一起,cat是concatnate的意思,即拼接,联系在一起。

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)#按维数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)#按维数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拼接的时候就有两种拼接方式:按行拼接和按列拼接。即所谓的维数0和维数1

       C=torch.cat((A,B),0)就表示按维数0(行)拼接A和B,也就是竖着拼接,A上B下。此时需要注意:列数必须一致,即维数1数值要相同,这里都是3列,方能列对齐。拼接后的C的第0维是两个维数0数值和,即2+4=6.

       C=torch.cat((A,B),1)就表示按维数1(列)拼接A和B,也就是横着拼接,A左B右。此时需要注意:行数必须一致,即维数0数值要相同,这里都是2行,方能行对齐。拼接后的C的第1维是两个维数1数值和,即3+4=7.

       从2维例子可以看出,使用torch.cat((A,B),dim)时,除拼接维数dim数值可不同外其余维数数值需相同,方能对齐。

3.实例

       在深度学习处理图像时,常用的有3通道的RGB彩色图像及单通道的灰度图。张量size为cxhxw,即通道数x图像高度x图像宽度。在用torch.cat拼接两张图像时一般要求图像大小一致而通道数可不一致,即h和w同,c可不同。当然实际有3种拼接方式,另两种好像不常见。比如经典网络结构:U-Net

image.png

       里面用到4次torch.cat,其中copy and crop操作就是通过torch.cat来实现的。可以看到通过上采样(up-conv 2x2)将原始图像h和w变为原来2倍,再和左边直接copy过来的同样h,w的图像拼接。这样做,可以有效利用原始结构信息。

4.总结

使用torch.cat((A,B),dim)时,除拼接维数dim数值可不同外其余维数数值需相同,方能对齐。

【参考】

https://blog.csdn.net/qq_39709535/article/details/80803003

点滴分享,福泽你我!Add oil!



https://blog.sciencenet.cn/blog-3428464-1256254.html

上一篇:pytorch中contiguous()
下一篇:遥感分类精度评价与多类分类性能评价
收藏 IP: 211.162.81.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

IP: 112.4.2.*   闂傚倷鐒﹂幃鍫曞磿閹惰棄纾绘繛鎴旀嚍閸ヮ剚鏅搁柨鐕傛嫹 | 闂備浇宕垫慨宥咁吋閸℃浼� 闂備浇宕垫慨宥咁吋閸℃浼� +1 [1]闂傚倷绀侀幖顐⒚洪妸鈺佺;闁圭偓鍓氶悢鍡涙煥閻曞倹瀚�   2015-4-27 14:35
闂傚倷鑳堕崕鐢稿疾濠靛洨浠氱紓鍌欓檷閸斿苯顕i崜浣虹焿鐎广儱妫欓崕鐔兼煏閸繂鏆欏ù鐘靛亾缁绘盯骞嬮悙鏉戦瀺缂備緡鍠栧ù椋庢閻愬墎鐤€闁哄倽顔婄划鏉戭渻閵堝棗鐏辨繛澶嬫礋閹兘鏁撻敓锟�5婵犵數鍋為崹鍫曞箰婵犳碍鍋嬫繝濠傜墛閻掕姤銇勯弽顐沪闁抽攱鎹囬弻鐔虹矙閸ф鈧绱掗幓鎺旂Ш闁哄瞼鍠庨悾锟犳焽閿斿彨銈夋⒑闁偛鑻晶楣冩煙閸戙倖瀚�15婵犵數鍋為崹鍫曞箰婵犳碍鍋嬫繝濠傜墛閻掕姤銇勯弽銊с€掗梻鍕閺屾洘寰勫☉銏☆€嶉梺缁樺笒濞硷繝寮婚敓鐘茬倞闁崇懓绨遍崑鎾垛偓锝庡墯椤洘绻濋棃娑卞剰闁圭懓鐖奸弻鏇熺節韫囨洜鏆犻梺姹囧姂缁犳牠寮婚敓鐘茬<闁靛牆鎳愭禒鈺呮⒑绾懏鑵归柛妤€鍟块悾鐑芥晸閻樿尙楠囬梺鍓茬厛閸n噣宕ú顏呪拺闁告稑锕ょ粭姘舵煟閻曞倻鐣遍崡閬嶆煥閻曞倹瀚�13婵犵數鍋為崹鍫曞箰婵犳碍鍋嬫繝濠傜墛閻掕姤銇勯弽顐粶缂佺媴缍侀弻鐔兼焽閿曗偓婢ь垶鏌涙繛褍娲﹂悡娆愩亜閹哄秷鍏岀紒鐘崇墵閺岋綁顢曢姀銏㈩啋婵犵鍓濋幐鎶藉极閹剧粯鏅搁柨鐕傛嫹16婵犵數鍋為崹鍫曞箰婵犳碍鍋嬫繝濠傜墛閻掕姤銇勯弽顐沪闁搞倖姊归妵鍕箛閳轰胶浠奸梻浣斤骏閸婃繈寮诲☉娆愬劅妞ゆ牗绋戦锟�(闂備焦鐪归崺鍕垂闁秵鍋嬫俊銈傚亾闁挎洏鍨介、鏃堝醇濠靛牞绱甸梻浣稿閻撳牓宕板Δ鍛9闂傚牊鑰借ぐ鎺撳亼闁告侗鍠栭锟�)闂傚倷鐒﹂惇褰掑礉瀹€鈧埀顒佸嚬閸欏啫顕i幖浣哥妞ゆ梻鍘у鐑芥煙閸忚偐鏆橀柛銊ㄦ閻ヮ亪顢涢悙瀵稿幐闂佹悶鍎滈崘顏咁啇缂傚倷娴囨ご鍝ユ崲閸繄鏆﹂柨婵嗩樈閺佸秵绻濋棃娑欘棞妤犵偛顑夊娲传閸曨偒浼岄梺鎼炲妺閸楁娊銆佸鑸电劶鐎广儱妫楀▓婊呯磼閻愵剙鍔ゆい鎴濇缁﹪顢氶埀顒勫蓟濞戞﹩娼╂い鎾跺仧娴犳悂姊虹紒妯绘儓缂佺粯绻堥獮鍐醇閺囩偛鑰垮┑鈽嗗灥瀹曠敻銆呴鈶╂斀闁绘劕寮堕悡鍌炴煕閺囥劌浜為柛婵嗛叄濮婃椽宕ㄦ繝鍕櫗闂佹悶鍔庨弫濠氬箚閸繍鍚嬪璺侯儏閸擃參姊洪崨濠冨闁哥姵宀搁幃銏ゅ川椤栨浜鹃柛顭戝亝缁舵煡鎮楀銉ュ闁糕斁鍋撳銈嗗笒閿曘儳鈧熬鎷�

1/1 | 闂傚倷娴囬鏍礈濮橆儵锝夊箳濡ゅ﹥鏅i梺璺ㄥ櫐閹凤拷:1 | 婵犵妲呴崑鎾跺緤妤e啯鍋嬮柣妯款嚙杩濋梺璺ㄥ櫐閹凤拷 | 婵犵數鍋為崹鍫曞箰閹间焦鏅濋柨婵嗘川閸楁岸鎮楀☉娅辨粍绂嶅⿰鍫熺叆闁绘洖鍊圭€氾拷 | 婵犵數鍋為崹鍫曞箰閹间緡鏁勯柛鏇ㄥ幘閸楁岸鎮楀☉娅辨粍绂嶅⿰鍫熺叆闁绘洖鍊圭€氾拷 | 闂傚倷绀侀幖顐︽偋濠婂牆纾诲┑鐘叉搐杩濋梺璺ㄥ櫐閹凤拷 | 闂備浇宕垫慨鎾箹椤愶附鍋柛銉亹瑜版帗鏅搁柨鐕傛嫹

扫一扫,分享此博文

全部作者的其他最新博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2025-1-23 10:39

Powered by ScienceNet.cn

Copyright © 2007-2025 中国科学报社

返回顶部