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 13 Python
python简单实现获取当前时间
Aug 27 Python
使用Python处理Excel表格的简单方法
Jun 07 Python
python 给DataFrame增加index行名和columns列名的实现方法
Jun 08 Python
python代码过长的换行方法
Jul 19 Python
python os.path模块常用方法实例详解
Sep 16 Python
python实现五子棋小游戏
Mar 25 Python
Python3模拟登录操作实例分析
Mar 12 Python
pytorch对梯度进行可视化进行梯度检查教程
Feb 04 Python
PIL包中Image模块的convert()函数的具体使用
Feb 26 Python
解决Jupyter因卸载重装导致的问题修复
Apr 10 Python
python xlsxwriter模块的使用
Dec 24 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实现12306火车票余票查询和价格查询(12306火车票查询)
2014/01/14 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
php实现斐波那契数列的简单写法
2014/07/19 PHP
destoon供应信息title调用出公司名称的方法
2014/08/22 PHP
PHP中shuffle数组值随便排序函数用法
2014/11/21 PHP
js getElementsByTagName的简写方式
2010/06/27 Javascript
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
2012/01/13 Javascript
不使用XMLHttpRequest实现异步加载 Iframe和script
2012/10/29 Javascript
jquery和javascript中如何将一元素的内容赋给另一元素
2014/01/09 Javascript
jQuery解决input超多的表单提交
2015/08/10 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
2016/04/26 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
JS实现动画兼容性的transition和transform实例分析
2016/12/13 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
原生js实现鼠标跟随效果
2017/02/28 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
微信小程序实现左滑修改、删除功能
2020/10/19 Javascript
使用vue开发移动端管理后台的注意事项
2019/03/07 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
vue调用本地摄像头实现拍照功能
2020/08/14 Javascript
详解Django缓存处理中Vary头部的使用
2015/07/24 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
python使用thrift教程的方法示例
2019/03/21 Python
python3格式化字符串 f-string的高级用法(推荐)
2020/03/04 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
旧时光糖果:Old Time Candy
2018/02/05 全球购物
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
2013/05/01 面试题
如何理解transaction事务的概念
2015/05/27 面试题
广告业务员岗位职责
2014/02/06 职场文书
毕业自我鉴定书
2014/03/24 职场文书
高中优秀作文(范文)
2019/08/15 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js