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 24 Python
python虚拟环境的安装配置图文教程
Oct 20 Python
Python字典,函数,全局变量代码解析
Dec 18 Python
python批量设置多个Excel文件页眉页脚的脚本
Mar 14 Python
python 读取摄像头数据并保存的实例
Aug 03 Python
python实现停车管理系统
Nov 30 Python
Python的条件表达式和lambda表达式实例
Jan 31 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
Jan 25 Python
Python脚本实现监听服务器的思路代码详解
May 28 Python
python如何爬取动态网站
Sep 09 Python
python 实现关联规则算法Apriori的示例
Sep 30 Python
python爬虫分布式获取数据的实例方法
Nov 26 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
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
PHP延迟静态绑定的深入讲解
2018/04/02 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
背景图跟随鼠标移动的Mootools插件实现代码
2011/12/12 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
深入探讨javascript中的数据类型
2015/03/04 Javascript
js简单实现Select互换数据的方法
2015/08/17 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
2016/01/26 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
2016/10/09 Javascript
移动端js图片查看器
2016/11/17 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
浅谈VUE中演示v-for为什么要加key
2020/01/16 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
[02:23]2016国际邀请赛中国区预选赛wings晋级之路
2016/06/29 DOTA
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
利用python GDAL库读写geotiff格式的遥感影像方法
2018/11/29 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
2018/12/07 Python
django解决跨域请求的问题详解
2019/01/20 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
俄罗斯香水和化妆品网上商店:NOTINO.ru
2019/12/17 全球购物
Linux常见面试题
2013/03/18 面试题
英文版网络工程师求职信
2013/10/28 职场文书
客服专员岗位职责
2014/02/28 职场文书
捐款通知怎么写
2015/04/24 职场文书
法定代表人资格证明书
2015/06/18 职场文书
学会Python数据可视化必须尝试这7个库
2021/06/16 Python
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python