简述

Pytorch中没有内置Merge操作,需要手动实现。

下面会以多个四维的Tensor直接的Merge操作来展示。(len, *image_shape(占三维))

比如上面,这样的图片。

每一行都是一个数据X_i(包含三张黑白图)。
所以,如果是直接用torch.cat([x0, x1, x2])的话,就是直接把这九张图按照顺序排列了下。

[x1[0],..., x1[n], x2[0],..., x2[n], x3[0],..., x3[n]]

图片对应的编号顺序:

1, 2, 3,
4, 5, 6,
7, 8, 9

但是如果有时候,需要把这个大图进行一个 转置 , 就需要用到了Merge的操作。

将(x1, x2, x3),三个变量merge操作。之后,就是

[x1[0], x2[0], x3[0], ..., x1[n], x2[n], x3[n]]

这样再输出的话,就是在大图上做了转置的效果。

因此需要做Merge。

Merge实现

先给范式:x1,x2,...xn的相互merge

torch.stack([x1,x2,..,xn]).transpose(1, 0).contiguous().view(len(x1+x2+..+xn), *x.shape[1:])

简单来说,就是

  1. 先用stack按照第一维度来进行叠加(是会扩充维度的)
  2. 之后,将扩充出来的维度和一开始的index维度(也就是x1[0], x1[2], ..., x1[index]),进行转置(注意的是,需要使用contiguous() 因为需要在物理层面上也要完成转置,之后才能view。这是pytorch的内部机制)
  3. 最后,再用view的方式将扩充好的维度压缩回去。

给个范例的输出:

再给个实例上的代码区别的部分:

图一

 plt.imshow(np.transpose(vutils.make_grid(torch.cat([G_x.cpu().detach(), x.cpu().detach(), y.cpu().detach()]), nrow=3, padding=0,normalize=True, scale_each=True), (1, 2, 0)), cmap='gray')

图二(转置后)

 plt.imshow(np.transpose(vutils.make_grid(torch.stack([G_x.cpu().detach(), x.cpu().detach(), y.cpu().detach()]).transpose(1, 0).contiguous().view(BATCH_SIZE * 3, 1, 96, 96), nrow=3, padding=0,normalize=True, scale_each=True), (1, 2, 0)), cmap='gray')

Pytorch Merge操作相关推荐

  1. RxJava2 / RxAndroid2的merge操作合并多个Observable

    RxJava2/RxAndroid2的merge操作合并多个Observable RxAndroid2/RxJava2的merge操作合并若干个Observable为单个可观测的Observable, ...

  2. dataframe常用操作_Pandas | Dataframe的merge操作,像数据库一样尽情join

    点击上方蓝字,关注并星标,和我一起学技术. 今天是pandas数据处理第8篇文章,我们一起来聊聊dataframe的合并. 常见的数据合并操作主要有两种,第一种是我们新生成了新的特征,想要把它和旧的特 ...

  3. (pytorch-深度学习系列)pytorch数据操作

    pytorch数据操作 基本数据操作,都详细注释了,如下: import torch#5x3的未初始化的Tensor x = torch.empty(5, 3) print("5x3的未初始 ...

  4. MERGE操作学习总结

    MERGE Merge操作要解决的问题 在我们进行数据处理过程中,常常遇到如下操作过程: 用源表数据更新目标表过程,其操作的方式为: 1. 如果满足一定的关联条件,就用源表数据更新目标表: 2. 如果 ...

  5. Pytorch基础操作 —— 6. 如何使用自定义数据集

    文章目录 自定义数据集 Step 1. 熟悉你的数据集 有数据就要有标签 数据大小.维度一定要一样 归一化 Step 2. 确定如何加载你的数据集 使用 DataLoader 批量加载数据 需要注意的 ...

  6. 02.PyTorch基础操作(3-1 机器学习中的分类与回归问题-机器学习基本构成元素)

    @[TOC](02.PyTorch基础操作(3-1 机器学习中的分类与回归问题-机器学习基本构成元素)) 来自慕课网 一.3-1 机器学习中的分类与回归问题-机器学习基本构成元素

  7. Git如何撤销merge操作

    Git如何撤销merge操作.当 merge 以后还有别的操作和改动时,用 git revert:该命令就是为撤销某次提交而存在的: 首先,我是明白100047dcc这次提交是有问题的,这是问题的源头 ...

  8. pytorch卷积操作nn.Conv中的groups参数用法解释

    MobileNetV1<MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications> ...

  9. pytorch基础操作学习笔记(autograd,Tensor)

    简述 简单讲讲关于torch.autograd内容(因为我也有点菜) 文章目录 简述 简单讲讲 Tensor 介绍Tensor 创建Tensor 获取Tensor数据规模 将tensor转成其他数据类 ...

最新文章

  1. 程序员的学习方法的一些总结
  2. VCS-bilibili教程篇1-Simulation Basics
  3. 手机web网页制作的认识(有关meta标签)
  4. Kubernetes API 与 Operator:不为人知的开发者战争
  5. 如何dos中查看当前MySQL版本信息?
  6. Java NIO学习篇之缓冲区Buffer详解
  7. 基于JAVA+SpringBoot+Mybatis+MYSQL的个人博客系统
  8. Unix/Linux编程:Unix文件系统回顾
  9. 新墨斯智能鞋就是您的足底按摩师
  10. 程序员的痛点:我竟然还不懂Linux性能优化
  11. dpdk环境搭建+创建dpdk项目,并连接dpdk库
  12. OkHttp面试之--HttpEngine中的readResponse流程简介
  13. Leetcode 139. 单词拆分
  14. AMD统一渲染GPU架构 历程回顾与评测
  15. 北斗/GPS芯片/模块基本常识问答:
  16. 老猿学5G扫盲贴:中国移动的5G计费架构解读
  17. ElasticSearch(ES)介绍
  18. iOS开发 编译工程师 遇到once.h beng'kuispatch_once(predicate,block)重新拉取代码后解决
  19. Java数据结构之位图
  20. SpringBoot中使用注解来实现 Redis 分布式锁

热门文章

  1. 高通Android平台硬件调试之Camera篇
  2. Android系统修改硬件设备访问权限
  3. java B2B2C Springcloud电子商城系统-通过消息队列传输zipkin日志
  4. 使用 sqlyog 导入导出数据显示 lost connection to mysql server during query
  5. SQL Server 数值四舍五入,小数点后保留2位
  6. Linux学习笔记——例说makefile 综合案例
  7. FineUI(开源版)v6.0中FState服务器端验证的实现原理
  8. 马哥linux学习笔记:openssl的使用
  9. RHCE 学习笔记(22) 网络用户
  10. 遍历并批量删除容器中元素出现ConcurrentModificationException原因及处置