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

里面用到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 中 torch.cat 函数的使用相关推荐

  1. PyTorch中torch.norm函数详解

    torch.norm() 是 PyTorch 中的一个函数,用于计算输入张量沿指定维度的范数.具体而言,当给定一个输入张量 x 和一个整数 p 时,torch.norm(x, p) 将返回输入张量 x ...

  2. Pytorch中torch.argmax()函数解析

    一. torch.argmax()函数解析 1. 官网链接 torch.argmax(),如下图所示: 2. torch.argmax(input)函数解析 torch.argmax(input) → ...

  3. 【pytorch】torch.cat()函数

    欢迎移步我的个人博客 例子 import torchA=torch.ones(2,3) #2x3的张量(矩阵) Atensor([[ 1., 1., 1.],[ 1., 1., 1.]])B=2*to ...

  4. Pytorch中torch.repeat()函数解析

    一. torch.repeat()函数解析 1. 说明 官网:torch.tensor.repeat(),函数说明如下图所示: 2. 函数功能 torch.tensor.repeat()函数可以对张量 ...

  5. pytorch中torch.cholesky()函数的使用

    1. 函数介绍: 功能:计算对称正定矩阵的Cholesky分解.A 或对于成批的对称正定矩阵.如果 upper 为 True ,则返回的矩阵 U 为上三角,分解形式为:A=U^TU如果 upper 为 ...

  6. 关于PyTorch中的register_forward_hook()函数未能执行其中hook函数的问题

    关于PyTorch中的register_forward_hook()函数未能执行其中hook函数的问题 Hook 是 PyTorch 中一个十分有用的特性.利用它,我们可以不必改变网络输入输出的结构, ...

  7. Pytorch中的collate_fn函数用法

    Pytorch中的collate_fn函数用法 官方的解释:   Puts each data field into a tensor with outer dimension batch size ...

  8. torch.cat()函数 ,关于四维tensor维度合并。

    引言:看了关于torch.cat函数的文章,有点乱,自己总结一篇,关于四维tensor合并. 一张图像在计算机中的表示通常为三维tensor(张量),即[channels,height,width] ...

  9. PyTorch 中 torch.optim优化器的使用

    一.优化器基本使用方法 建立优化器实例 循环: 清空梯度 向前传播 计算Loss 反向传播 更新参数 示例: from torch import optim input = ..... optimiz ...

最新文章

  1. 算法----------字符串相乘(Java 版本)
  2. 计算机网络教学重点突破,武汉理工大学计算机网络复习重点教学内容(34页)-原创力文档...
  3. css3多行超出隐藏并打点点
  4. 码长6075的qc-ldpc编译码的MATLAB误码率仿真
  5. Spring-Bean的依赖注入分析-01
  6. 怎样封装一个自己的mvc框架(五)
  7. linux generic什么意思_如何在 Ubuntu 中修复 VirtualBox 的 “rc=1908” 错误 | Linux 中国...
  8. uboot第一阶段详细分析
  9. Android WindowManager实现悬浮窗效果 (一)——与当前Activity绑定
  10. mysql template sql_SpringBoot-JdbcTemplates-MySQL
  11. 不同域名指向静态图片文件
  12. sap 中migo收货自动打印smartform_EWM MES/ERP集成 生产收货的几种方式
  13. Gxemul 运行原理简述
  14. 尚硅谷李玉婷老师mysql课程--数据库和SQL概述
  15. Android测试总结
  16. Redis 雪崩,穿透,击穿
  17. 攒机笔记二十二:台式组装机(2022.9)
  18. 如何打开计算机本地组策略编辑器
  19. Spatio-Temporal Dynamics and Semantic Attribute Enriched Visual Encoding for Video Captioning
  20. 图书管理系统Java

热门文章

  1. python创意实用案例-9个 Python 实用案例分享
  2. python用什么来写模块-Python 3.1 用C写模块 扩展(序)
  3. python和java选择哪个-Python和Java该如何选择?选哪个好?
  4. python和c 的区别-对比平台--C和Python之间的区别
  5. 安卓手机上跑_直接在电脑上浏览操作安卓手机 #效率App #scrcpy
  6. @RequestParam @RequestBody @PathVariable 等参数绑定
  7. thymeleaf获取url地址跳转时所带参数
  8. IOException: Broken pipe
  9. 远程使用plsql登陆数据库时,界面提示 ORA-12170 TNS 连接超时
  10. fcq java_Java设计模式百例 - 解释器模式