深度学习(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高阶操作一: 合并与分割相关推荐

  1. 深度学习(17)TensorFlow高阶操作六: 高阶OP

    深度学习(17)TensorFlow高阶操作六: 高阶OP 1. Where(tensor) 2. where(cond, A, B) 3. 1-D scatter_nd 4. 2-D scatter ...

  2. 深度学习(14)TensorFlow高阶操作三: 张量排序

    深度学习(14)TensorFlow高阶操作三: 张量排序 一. Sort, argsort 1. 一维Tensor 2. 多维Tensor 二. Top_k 三. Top-k accuracy(To ...

  3. 深度学习(16)TensorFlow高阶操作五: 张量限幅

    深度学习(16)TensorFlow高阶操作五: 张量限幅 1. clip_by_value 2. relu 3. clip_by_norm 4. Gradient clipping 5. 梯度爆炸实 ...

  4. 深度学习(15)TensorFlow高阶操作四: 填充与复制

    深度学习(15)TensorFlow高阶操作四: 填充与复制 1. Pad 2. 常用于Image Padding 3. tile 4. tile VS broadcast_to Outline pa ...

  5. 深度学习中的高阶特征

    由于自己研究方向为基于高阶的图像分类,故在这里对相关论文做一个简单的划分和总结. 按照计算高阶的层,位于卷积神经网络的位置划分,可以分为: 网络末端 网络中部 2022-05-24 update (C ...

  6. 深度学习入门及高阶经典课程、教程等资源合集(长期整理)

    深度学习资料 经典课程 MIT 图分析 yale 图统计推断 standford 机器学习 stanford 机器学习系统设计 stanford 实用机器学习 纽约大学深度学习2020 吴恩达深度学习 ...

  7. 视频教程-深度学习与TensorFlow 2入门实战-深度学习

    深度学习与TensorFlow 2入门实战 新加坡国立大学研究员 龙良曲 ¥399.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订阅课程,领取优惠,最少立减5 ...

  8. TensorFlow高阶 API: keras教程-使用tf.keras搭建mnist手写数字识别网络

    TensorFlow高阶 API:keras教程-使用tf.keras搭建mnist手写数字识别网络 目录 TensorFlow高阶 API:keras教程-使用tf.keras搭建mnist手写数字 ...

  9. Tensorflow学习四---高阶操作

    Tensorflow学习四-高阶操作 Merge and split 1.tf.concat 拼接 a = tf.ones([4,32,8]) b = tf.ones([2,32,8]) print( ...

最新文章

  1. ALV复制内容到剪贴板
  2. 系统上线后关键用户的工作建议
  3. Javascript的面对对象的理解 【上】(prototype,函数和对象等概念)
  4. 光绘文件 c语言 解析,AltiumDesigner输出光绘文件
  5. 用JQuery操作元素的style属性
  6. Direct2D教程(十二)图层
  7. PTA|团体程序设计天梯赛-练习集|JAVA版
  8. 数据挖掘 文本分类(三)本地文档分词再保存到本地
  9. 英语常见词根词缀大全(一)
  10. 【笔记】架构整洁之道
  11. 微信 百度云 服务器繁忙,百度网盘搜索功能失效提示操作过于频繁如何解决
  12. 入门级,Hadoop详情教程(一)
  13. 基于Java的电影售票网站
  14. 原型模式与深拷贝浅拷贝
  15. appinventor飞机大战案例_APPInventor实例及讲解
  16. matlab中的sig函数,MATLAB——sigmoid传递函数
  17. jenkins下载地址deb包
  18. Java 在Word中嵌入多媒体(视频、音频)文件
  19. 定了!2021年PMP考试时间安排
  20. cad怎么转换成pdf格式?

热门文章

  1. php 内核开发_深入理解PHP7内核之Reference
  2. c语言程序输入n个数字排序,输入n个数字然后进行排序,用C语言编写。注意是n个数啊,不是确定的个数。...
  3. foreach、qAsConst用法总结
  4. 最详细的linux下的磁盘分区及格式化
  5. 3706 teradata 语句报错_Teradata SQL
  6. PADS Layout VX.2.3 制作PCB封装(Decal)时,导入DXF文件
  7. React jsx 中写更优雅、直观的条件运算符
  8. 想靠大数据创业 你需要了解什么
  9. 浅谈MVC设计模式和SSH框架的关系
  10. C#~异步编程续~.net4.5主推的awaitasync应用