Pytorch中的torch.cat()函数

更新时间:2023-07-03 12:43:50 阅读: 评论:0

纳达尔世界第一Pytorch中的torch.cat()函数
devastate转载⾃:
1. 字⾯理解:torch.cat是将两个张量(tensor)拼接在⼀起,cat是concatnate的意思,即拼接,联系在⼀起。
2. 例⼦理解
C = torch.cat( (A,B),0 )  #按维数0拼接(竖着拼)
overcome
C = torch.cat( (A,B),1 )  #按维数1拼接(横着拼)
import torch
>>> s(2,3)    #2x3的张量(矩阵)
>>> A
tensor([[ 1.,  1.,  1.],
[ 1.,  1.,  1.]])
irvine
>>> B=s(4,3)  #4x3的张量(矩阵)
>>> B
tensor([[ 2.,  2.,  2.],
[ 2.,  2.,  2.],
elecom[ 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])
focus什么意思
>>> D=s(2,4) #2x4的张量(矩阵)
>>> C=torch.cat((A,D),1)#按维数1(列)拼接
>>> C
tensor([[ 1.,  1.,  1.,  2.,  2.,  2.,  2.],
luyu
[ 1.,  1.,  1.,  2.,  2.,  2.,  2.]])
>>> C.size()
torch.Size([2, 7])
cet 99sushe com上⾯给出了两个张量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
⾥⾯⽤到4次torch.cat,其中copy and crop操作就是通过torch.cat来实现的。可以看到通过上采样(up-conv 2x2)将原始图像h和w变为原来2倍,再和左边直接copy过来的同样h,w的图像拼接。这样做,可以有效利⽤原始结构信息。
研究生国家分数线4.总结
使⽤torch.cat((A,B),dim)时,除拼接维数dim数值可不同外其余维数数值需相同,⽅能对齐。ap系列

本文发布于:2023-07-03 12:43:50,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/165813.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   拼接   维数   看到   数值   结构   需要
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图