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中处理异常的教程
May 24 Python
Python实现批量将word转html并将html内容发布至网站的方法
Jul 14 Python
Python3字符串学习教程
Aug 20 Python
selenium python 实现基本自动化测试的示例代码
Feb 25 Python
python使用递归的方式建立二叉树
Jul 03 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
Aug 19 Python
如何基于Python制作有道翻译小工具
Dec 16 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
Feb 04 Python
Django 自定义权限管理系统详解(通过中间件认证)
Mar 11 Python
django配置app中的静态文件步骤
Mar 27 Python
Python气泡提示与标签的实现
Apr 01 Python
浅谈Python类的单继承相关知识
May 12 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
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
php动态生成函数示例
2014/03/21 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
javascript比较文档位置
2008/04/08 Javascript
AJAX分页的代码(后台asp.net)
2011/02/14 Javascript
js获取input标签的输入值实现代码
2013/08/05 Javascript
jquery select 设置默认选中的示例代码
2014/02/07 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
vue自定义指令directive实例详解
2018/01/17 Javascript
Es6 Generator函数详细解析
2018/02/24 Javascript
vscode中vue-cli项目es-lint的配置方法
2018/07/30 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
2019/05/23 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
openlayers实现地图弹窗
2020/09/25 Javascript
js实现验证码干扰(静态)
2021/02/22 Javascript
[03:00]DOTA2-DPC中国联赛1月18日Recap集锦
2021/03/11 DOTA
Python OpenCV中的resize()函数的使用
2019/06/20 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
美津浓巴西官方网站:Mizuno巴西
2019/07/24 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
数据库专业英语
2012/11/30 面试题
C#面试题
2016/05/06 面试题
董事长职责范文
2013/11/08 职场文书
机械工程师的岗位职责
2013/11/17 职场文书
毕业生简历自我评价范文
2014/04/09 职场文书
C++程序员求职信范文
2014/04/14 职场文书
电子装配专业毕业生求职信
2014/04/23 职场文书
中秋节国旗下演讲稿
2014/09/05 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
中学图书馆工作总结
2015/08/11 职场文书
市直属机关2016年主题党日活动总结
2016/04/05 职场文书
一文读懂navicat for mysql基础知识
2021/05/31 MySQL
Element实现动态表格的示例代码
2021/08/02 Javascript