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中除法使用的注意事项
Aug 21 Python
在Django中限制已登录用户的访问的方法
Jul 23 Python
Python序列操作之进阶篇
Dec 08 Python
python安装cx_Oracle模块常见问题与解决方法
Feb 21 Python
详解python中requirements.txt的一切
Mar 03 Python
Python实现Linux中的du命令
Jun 12 Python
python绘制评估优化算法性能的测试函数
Jun 25 Python
对python3 sort sorted 函数的应用详解
Jun 27 Python
简单了解python gevent 协程使用及作用
Jul 22 Python
Django在pycharm下修改默认启动端口的方法
Jul 26 Python
如何更换python默认编辑器的背景色
Aug 10 Python
Python一些基本的图像操作和处理总结
Jun 23 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
我的论坛源代码(三)
2006/10/09 PHP
mysql 字段类型说明
2007/04/27 PHP
php socket方式提交的post详解
2008/07/19 PHP
PHP中余数、取余的妙用
2015/06/29 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
JavaScript中的方法重载实例
2015/03/16 Javascript
bootstrap网页框架的使用方法
2016/05/10 Javascript
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
jQuery弹出层插件popShow(改进版)用法示例
2017/01/23 Javascript
详解微信小程序 template添加绑定事件
2017/06/23 Javascript
element实现合并单元格通用方法
2019/11/13 Javascript
Js利用正则表达式去除字符串的中括号
2020/11/23 Javascript
Python字典数据对象拆分的简单实现方法
2017/12/05 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
印度购物网站:TATA CLiQ
2017/11/23 全球购物
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
英国假发网站:Hothair
2018/02/23 全球购物
伦敦香水公司:The London Perfume Company
2019/11/13 全球购物
怎么写好自荐信
2013/10/30 职场文书
小学门卫岗位职责
2013/12/17 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
华山导游词
2015/02/03 职场文书
爱国之歌(8首)
2019/09/29 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers
Spring IOC容器Bean的作用域及生命周期实例
2022/05/30 Java/Android
Beekeeper Studio开源数据库管理工具比Navicat更炫酷
2022/06/21 数据库