深度学习(12)TensorFlow高阶操作一: 合并与分割
深度学习(12)TensorFlow高阶操作一: 合并与分割
- 1. concat
- 2. stack: create new dim
- 3. Dim mismatch
- 4. unstuck
- 5. split
Merge and split
- tf.concat(拼接)
- tf.split(分割)
- tf.stack(堆叠)
- tf.unstack(分割,为split中的一种)
1. concat
- Statistics about scores
- [class1−4,students,scores][class1-4,students,scores][class1−4,students,scores]
- [class5−6,students,scores][class5-6,students,scores][class5−6,students,scores]
(1) c = tf.concat([a, b], axis=0)1
: 将a和b合并为c,合并第1个维度(axis=0),c.shape=[6, 35, 8];
(2) tf. concat([a, b], axis=1)
: 合并a和b的第2个维度(axis=1),其shape=[4, 35, 8];
- Along distinct dim/axis
- Dim = d
- axis = 0;
shape=[12, 4];
- axis=0:
shape=[4, 7];
注: 合并操作不会增加维度,合并之前是2维的Tensor,那么合并之后还是2维的Tensor。如果想要创造新的维度,我们就需要stack操作了;
2. stack: create new dim
- Statistics about scores
- School1: [classes,students,scores][classes,students,scores][classes,students,scores]
- School2: [classes,students,scores][classes,students,scores][classes,students,scores]
→\to→ - [schools,classes,students,scores][schools,classes,students,scores][schools,classes,students,scores]
(1) tf.concat([a, b], axis=-1
): 合并a和b的倒数第1个维度(axis=-1),其shape=[4, 35, 16];
(2) tf.stack([a, b], axis=0)
: 在第1个维度(axis=0)处创造一个新的维度,创建后其shape=[2, 4, 35, 8];
(3) tf.stack([a, b], axis=3)
: 在第4个维度(axis=3)处创造一个新的维度,创建后其shape=[4, 35, 8, 2];
3. Dim mismatch
- concat要求除了合并的那个维度外,其它维度的数值必须相等;
- stack要求所有维度的数值必须相等;
4. unstuck
(1) c = tf.stack([a, b])
: 将a和b通过stack()函数合并为c,合并完c.shape=[2, 4, 35, 8];
(2) aa, bb = unstack(c, axis=0)
: 将c从第1个维度(axis=0)处拆解为aa和bb,拆解完aa.shape=[4, 35, 8]; bb.shape=[4, 35 ,8];
(3) res = tf.unstack(c, axis=3)
: 将c从第4个维度(axis=3)处拆解,第4个维度消失,拆解后共有8个res,每个res.shape=[2, 4, 35],所以res[0].shape=[2, 4, 35]; res[7].shape=[2, 4, 35];
- 如果我们不希望将c拆解为这么多个res,比如只拆解为2个res,那么我们就需要使用一个临摹性更强的API——split。
5. split
- VS unstack
(1) res = tf.split(c, axis=3, num_or_size_splits=2)
: 将c从第4个维度(axis=3)处均分为2个res,每个res.shape=[2, 4, 35, 4]
;
(2) res = tf.split(c, axis=3, num_or_size_splits=[2, 2, 4])
: 将c从第4个维度(axis=3)处均分为3个res,将8按照[2, 2, 4]分为3份,其中res[0].shape=[2, 4, 35, 2]
; res[1].shape=[2, 4, 35, 2]
; res[2].shape=[2, 4, 35, 4]
。
参考文献:
[1] 龙良曲:《深度学习与TensorFlow2入门实战》
深度学习(12)TensorFlow高阶操作一: 合并与分割相关推荐
- 深度学习(17)TensorFlow高阶操作六: 高阶OP
深度学习(17)TensorFlow高阶操作六: 高阶OP 1. Where(tensor) 2. where(cond, A, B) 3. 1-D scatter_nd 4. 2-D scatter ...
- 深度学习(14)TensorFlow高阶操作三: 张量排序
深度学习(14)TensorFlow高阶操作三: 张量排序 一. Sort, argsort 1. 一维Tensor 2. 多维Tensor 二. Top_k 三. Top-k accuracy(To ...
- 深度学习(16)TensorFlow高阶操作五: 张量限幅
深度学习(16)TensorFlow高阶操作五: 张量限幅 1. clip_by_value 2. relu 3. clip_by_norm 4. Gradient clipping 5. 梯度爆炸实 ...
- 深度学习(15)TensorFlow高阶操作四: 填充与复制
深度学习(15)TensorFlow高阶操作四: 填充与复制 1. Pad 2. 常用于Image Padding 3. tile 4. tile VS broadcast_to Outline pa ...
- 深度学习中的高阶特征
由于自己研究方向为基于高阶的图像分类,故在这里对相关论文做一个简单的划分和总结. 按照计算高阶的层,位于卷积神经网络的位置划分,可以分为: 网络末端 网络中部 2022-05-24 update (C ...
- 深度学习入门及高阶经典课程、教程等资源合集(长期整理)
深度学习资料 经典课程 MIT 图分析 yale 图统计推断 standford 机器学习 stanford 机器学习系统设计 stanford 实用机器学习 纽约大学深度学习2020 吴恩达深度学习 ...
- 视频教程-深度学习与TensorFlow 2入门实战-深度学习
深度学习与TensorFlow 2入门实战 新加坡国立大学研究员 龙良曲 ¥399.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订阅课程,领取优惠,最少立减5 ...
- TensorFlow高阶 API: keras教程-使用tf.keras搭建mnist手写数字识别网络
TensorFlow高阶 API:keras教程-使用tf.keras搭建mnist手写数字识别网络 目录 TensorFlow高阶 API:keras教程-使用tf.keras搭建mnist手写数字 ...
- Tensorflow学习四---高阶操作
Tensorflow学习四-高阶操作 Merge and split 1.tf.concat 拼接 a = tf.ones([4,32,8]) b = tf.ones([2,32,8]) print( ...
最新文章
- ALV复制内容到剪贴板
- 系统上线后关键用户的工作建议
- Javascript的面对对象的理解 【上】(prototype,函数和对象等概念)
- 光绘文件 c语言 解析,AltiumDesigner输出光绘文件
- 用JQuery操作元素的style属性
- Direct2D教程(十二)图层
- PTA|团体程序设计天梯赛-练习集|JAVA版
- 数据挖掘 文本分类(三)本地文档分词再保存到本地
- 英语常见词根词缀大全(一)
- 【笔记】架构整洁之道
- 微信 百度云 服务器繁忙,百度网盘搜索功能失效提示操作过于频繁如何解决
- 入门级,Hadoop详情教程(一)
- 基于Java的电影售票网站
- 原型模式与深拷贝浅拷贝
- appinventor飞机大战案例_APPInventor实例及讲解
- matlab中的sig函数,MATLAB——sigmoid传递函数
- jenkins下载地址deb包
- Java 在Word中嵌入多媒体(视频、音频)文件
- 定了!2021年PMP考试时间安排
- cad怎么转换成pdf格式?
热门文章
- php 内核开发_深入理解PHP7内核之Reference
- c语言程序输入n个数字排序,输入n个数字然后进行排序,用C语言编写。注意是n个数啊,不是确定的个数。...
- foreach、qAsConst用法总结
- 最详细的linux下的磁盘分区及格式化
- 3706 teradata 语句报错_Teradata SQL
- PADS Layout VX.2.3 制作PCB封装(Decal)时,导入DXF文件
- React jsx 中写更优雅、直观的条件运算符
- 想靠大数据创业 你需要了解什么
- 浅谈MVC设计模式和SSH框架的关系
- C#~异步编程续~.net4.5主推的awaitasync应用