Pytorch Merge操作
简述
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:])
简单来说,就是
- 先用stack按照第一维度来进行叠加(是会扩充维度的)
- 之后,将扩充出来的维度和一开始的index维度(也就是
x1[0], x1[2], ..., x1[index]
),进行转置(注意的是,需要使用contiguous()
因为需要在物理层面上也要完成转置,之后才能view
。这是pytorch的内部机制) - 最后,再用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操作相关推荐
- RxJava2 / RxAndroid2的merge操作合并多个Observable
RxJava2/RxAndroid2的merge操作合并多个Observable RxAndroid2/RxJava2的merge操作合并若干个Observable为单个可观测的Observable, ...
- dataframe常用操作_Pandas | Dataframe的merge操作,像数据库一样尽情join
点击上方蓝字,关注并星标,和我一起学技术. 今天是pandas数据处理第8篇文章,我们一起来聊聊dataframe的合并. 常见的数据合并操作主要有两种,第一种是我们新生成了新的特征,想要把它和旧的特 ...
- (pytorch-深度学习系列)pytorch数据操作
pytorch数据操作 基本数据操作,都详细注释了,如下: import torch#5x3的未初始化的Tensor x = torch.empty(5, 3) print("5x3的未初始 ...
- MERGE操作学习总结
MERGE Merge操作要解决的问题 在我们进行数据处理过程中,常常遇到如下操作过程: 用源表数据更新目标表过程,其操作的方式为: 1. 如果满足一定的关联条件,就用源表数据更新目标表: 2. 如果 ...
- Pytorch基础操作 —— 6. 如何使用自定义数据集
文章目录 自定义数据集 Step 1. 熟悉你的数据集 有数据就要有标签 数据大小.维度一定要一样 归一化 Step 2. 确定如何加载你的数据集 使用 DataLoader 批量加载数据 需要注意的 ...
- 02.PyTorch基础操作(3-1 机器学习中的分类与回归问题-机器学习基本构成元素)
@[TOC](02.PyTorch基础操作(3-1 机器学习中的分类与回归问题-机器学习基本构成元素)) 来自慕课网 一.3-1 机器学习中的分类与回归问题-机器学习基本构成元素
- Git如何撤销merge操作
Git如何撤销merge操作.当 merge 以后还有别的操作和改动时,用 git revert:该命令就是为撤销某次提交而存在的: 首先,我是明白100047dcc这次提交是有问题的,这是问题的源头 ...
- pytorch卷积操作nn.Conv中的groups参数用法解释
MobileNetV1<MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications> ...
- pytorch基础操作学习笔记(autograd,Tensor)
简述 简单讲讲关于torch.autograd内容(因为我也有点菜) 文章目录 简述 简单讲讲 Tensor 介绍Tensor 创建Tensor 获取Tensor数据规模 将tensor转成其他数据类 ...
最新文章
- 程序员的学习方法的一些总结
- VCS-bilibili教程篇1-Simulation Basics
- 手机web网页制作的认识(有关meta标签)
- Kubernetes API 与 Operator:不为人知的开发者战争
- 如何dos中查看当前MySQL版本信息?
- Java NIO学习篇之缓冲区Buffer详解
- 基于JAVA+SpringBoot+Mybatis+MYSQL的个人博客系统
- Unix/Linux编程:Unix文件系统回顾
- 新墨斯智能鞋就是您的足底按摩师
- 程序员的痛点:我竟然还不懂Linux性能优化
- dpdk环境搭建+创建dpdk项目,并连接dpdk库
- OkHttp面试之--HttpEngine中的readResponse流程简介
- Leetcode 139. 单词拆分
- AMD统一渲染GPU架构 历程回顾与评测
- 北斗/GPS芯片/模块基本常识问答:
- 老猿学5G扫盲贴:中国移动的5G计费架构解读
- ElasticSearch(ES)介绍
- iOS开发 编译工程师 遇到once.h beng'kuispatch_once(predicate,block)重新拉取代码后解决
- Java数据结构之位图
- SpringBoot中使用注解来实现 Redis 分布式锁
热门文章
- 高通Android平台硬件调试之Camera篇
- Android系统修改硬件设备访问权限
- java B2B2C Springcloud电子商城系统-通过消息队列传输zipkin日志
- 使用 sqlyog 导入导出数据显示 lost connection to mysql server during query
- SQL Server 数值四舍五入,小数点后保留2位
- Linux学习笔记——例说makefile 综合案例
- FineUI(开源版)v6.0中FState服务器端验证的实现原理
- 马哥linux学习笔记:openssl的使用
- RHCE 学习笔记(22) 网络用户
- 遍历并批量删除容器中元素出现ConcurrentModificationException原因及处置