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 字符串操作方法大全
Mar 11 Python
python中偏函数partial用法实例分析
Jul 08 Python
python利用urllib和urllib2访问http的GET/POST详解
Sep 27 Python
Python创建二维数组实例(关于list的一个小坑)
Nov 07 Python
Python爬虫抓取代理IP并检验可用性的实例
May 07 Python
pytorch多进程加速及代码优化方法
Aug 19 Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 Python
10个Python面试常问的问题(小结)
Nov 20 Python
Python基础之函数原理与应用实例详解
Jan 03 Python
pytorch-RNN进行回归曲线预测方式
Jan 14 Python
Pandas 稀疏数据结构的实现
Jul 25 Python
Python中的 No Module named ***问题及解决
Jul 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
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
php array_values 返回数组的值实例详解
2016/11/17 PHP
几款极品的javascript压缩混淆工具
2007/05/16 Javascript
jQuery学习基础知识小结
2010/11/25 Javascript
在JavaScript中模拟类(class)及类的继承关系
2016/05/20 Javascript
js实现文字选中分享功能
2017/01/25 Javascript
nodejs 搭建简易服务器的图文教程(推荐)
2017/07/18 NodeJs
angular4中引入echarts的方法示例
2019/01/29 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
Vue实现剪切板图片压缩功能
2020/02/04 Javascript
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
Python编程修改MP3文件名称的方法
2017/04/19 Python
window下eclipse安装python插件教程
2017/04/24 Python
详解Python nose单元测试框架的安装与使用
2017/12/20 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
python 猴子补丁(monkey patch)
2019/06/26 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
降低python版本的操作方法
2020/09/11 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
2020/11/17 Python
django项目中使用云片网发送短信验证码的实现
2021/01/19 Python
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
捷克钓鱼用品网上商店:Parys.cz
2018/06/15 全球购物
StubHub新西兰:购买和出售你的门票
2019/04/22 全球购物
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
金融专业个人求职信
2013/09/22 职场文书
学前教育专业求职信
2014/09/02 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
2015年后勤工作总结范文
2015/04/08 职场文书
芙蓉镇观后感
2015/06/10 职场文书
小学班级标语口号大全
2015/12/26 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
python playwrigh框架入门安装使用
2022/07/23 Python