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程序设计入门(3)数组的使用
Jun 16 Python
Python re模块介绍
Nov 30 Python
python使用自定义user-agent抓取网页的方法
Apr 15 Python
基于Python os模块常用命令介绍
Nov 03 Python
Python操作MySQL模拟银行转账
Mar 12 Python
对pandas中两种数据类型Series和DataFrame的区别详解
Nov 12 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
Jun 19 Python
使用python写一个自动浏览文章的脚本实例
Dec 05 Python
python3连接kafka模块pykafka生产者简单封装代码
Dec 23 Python
Python 炫技操作之合并字典的七种方法
Apr 10 Python
Python 获取异常(Exception)信息的几种方法
Dec 29 Python
Python实现自动玩连连看的脚本分享
Apr 04 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
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
PHP实现阳历到农历转换的类实例
2015/03/07 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
豆瓣网的jquery代码实例
2008/06/15 Javascript
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
2010/11/21 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
JS如何调用WebAssembly编译出来的.wasm文件
2020/11/05 Javascript
Python实现的一个简单LRU cache
2014/09/26 Python
详解Python中的type()方法的使用
2015/05/21 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
Python PyQt5标准对话框用法示例
2017/08/23 Python
Python基于百度云文字识别API
2018/12/13 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
Python通过递归函数输出嵌套列表元素
2020/10/15 Python
HTML5移动端开发中的Viewport标签及相关CSS用法解析
2016/04/15 HTML / CSS
伊芙丽官方旗舰店:中国淑女一线品牌
2017/12/01 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
万豪国际住宅与别墅集团:Homes & Villas by Marriott International
2020/10/08 全球购物
木马的传播途径主要有哪些
2016/04/08 面试题
大学生职业生涯规划范文
2013/12/31 职场文书
2015年七一建党节演讲稿
2015/03/19 职场文书
司机岗位职责范本
2015/04/10 职场文书
员工开除通知书
2015/04/25 职场文书
护士业务学习心得体会
2016/01/25 职场文书
Win11局域网共享权限在哪里设置? Win11高级共享的设置技巧
2022/04/05 数码科技