PyTorch的torch.cat用法


Posted in Python onJune 28, 2020

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

PyTorch的torch.cat用法

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

4.总结

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

补充知识: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用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python封装对象实现时间效果
Apr 23 Python
python共享引用(多个变量引用)示例代码
Dec 04 Python
python抓取网页中图片并保存到本地
Dec 01 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
Jul 24 Python
pycharm 主题theme设置调整仿sublime的方法
May 23 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
Jul 04 Python
Python3.6使用tesseract-ocr的正确方法
Oct 17 Python
matplotlib.pyplot绘图显示控制方法
Jan 15 Python
Python提取支付宝和微信支付二维码的示例代码
Feb 15 Python
PyCharm无法引用自身项目解决方式
Feb 12 Python
Python flask路由间传递变量实例详解
Jun 03 Python
使用pytorch 筛选出一定范围的值
Jun 28 #Python
解析python 中/ 和 % 和 //(地板除)
Jun 28 #Python
pytorch 常用函数 max ,eq说明
Jun 28 #Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
Jun 28 #Python
Python turtle库的画笔控制说明
Jun 28 #Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
Jun 28 #Python
python删除指定列或多列单个或多个内容实例
Jun 28 #Python
You might like
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
2009/04/07 Javascript
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
2013/05/27 Javascript
js随机生成字母数字组合的字符串 随机动画数字
2015/09/02 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
2016/10/10 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
详解开发react应用最好用的脚手架 create-react-app
2018/04/24 Javascript
使用iView Upload 组件实现手动上传图片的示例代码
2018/10/01 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
2019/09/07 Javascript
使用zrender.js绘制体温单效果
2019/10/31 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
原生js实现贪吃蛇游戏
2020/10/26 Javascript
[01:03:31]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第二局
2016/02/26 DOTA
深入源码解析Python中的对象与类型
2015/12/11 Python
详解Python pygame安装过程笔记
2017/06/05 Python
Python程序员面试题 你必须提前准备!
2018/01/16 Python
Python中一些深不见底的“坑”
2019/06/12 Python
python Tcp协议发送和接收信息的例子
2019/07/22 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
python enumerate内置函数用法总结
2020/01/07 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
python实现电子词典
2020/03/03 Python
阿根廷票务网站:StubHub阿根廷
2018/04/13 全球购物
法国床上用品商店:La Compagnie du lit
2019/12/26 全球购物
优纳科技软件测试面试题
2012/05/15 面试题
通息工程毕业生自荐信
2013/10/16 职场文书
教育学习自我评价
2014/02/03 职场文书
《落花生》教学反思
2014/02/25 职场文书
优秀毕业生自荐信
2014/06/10 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
离婚协议书包括哪些内容
2014/10/16 职场文书
让世界充满爱观后感
2015/06/10 职场文书
pytorch中的numel函数用法说明
2021/05/13 Python
教你如何用cmd快速登录服务器
2022/06/10 Servers