tensorflow2.0笔记5:tensorFlow2.0中的索引和切片!

tensorFlow2.0中的索引和切片

文章目录

  • 一、索引与切片
      • 1.1、最基本的索引方式
      • 1.2、Numpy的索引方式
      • 1.3、切片(单冒号),start:end
      • 1.4、切片(双冒号),start: end: step 隔着采样。
        • 1.4.1、双冒号另一个神奇的功能: tensor倒序
      • 1.5、切片(省略号) ...
      • 1.6、Selective Indexing
        • 1.6.1、tf.gather
        • 1.6.2、tf.gatherd_nd
        • 1.6.2、tf.boolean_mask

介绍如何对一个tensor的部分数据进行一个读取,也就是tensor的索引和切片。

一、索引与切片

tensorflow2.0笔记5:tensorFlow2.0中的索引和切片!_第1张图片

1.1、最基本的索引方式

tensorflow2.0笔记5:tensorFlow2.0中的索引和切片!_第2张图片

注意:这种索引方式比较通用,大家都能接受,但这种索引方式比较单一,需要写多个中括号,看起开程序可读性比较差。只能取一个具体的元素,不支持那种隔断取,倒着取多样取得方式。这样对数据读取存在限制。numpy对这种方式进行了一个很好的拓展。下面展示!

1.2、Numpy的索引方式

tensorflow2.0笔记5:tensorFlow2.0中的索引和切片!_第3张图片

注意:使用numpy方式,程序的可读性强,程序中也可以少很多中括号。

1.3、切片(单冒号),start:end

tensorflow2.0笔记5:tensorFlow2.0中的索引和切片!_第4张图片

注意:切片希望读取维度的一部分,比如有4找图片,希望读取前2张图片。切片返回的总是一个标量。比如:这里对于传统的 a[ -1 ] 这样返回的是一个9;对于切片a[-1:]这样返回的是一个向量[ 9 ]。

tensorflow2.0笔记5:tensorFlow2.0中的索引和切片!_第5张图片

1.4、切片(双冒号),start: end: step 隔着采样。

  • 之前的start:end实际相当于start: end:1 默认step为1了。

tensorflow2.0笔记5:tensorFlow2.0中的索引和切片!_第6张图片

1.4.1、双冒号另一个神奇的功能: tensor倒序

tensorflow2.0笔记5:tensorFlow2.0中的索引和切片!_第7张图片

1.5、切片(省略号) …

tensorflow2.0笔记5:tensorFlow2.0中的索引和切片!_第8张图片

1.6、Selective Indexing

tensorflow2.0笔记5:tensorFlow2.0中的索引和切片!_第9张图片

1.6.1、tf.gather

tensorflow2.0笔记5:tensorFlow2.0中的索引和切片!_第10张图片
tensorflow2.0笔记5:tensorFlow2.0中的索引和切片!_第11张图片

注意:以上可以实现想怎么采样就怎么采样,没必要按着规则来了。

1.6.2、tf.gatherd_nd

tensorflow2.0笔记5:tensorFlow2.0中的索引和切片!_第12张图片
tensorflow2.0笔记5:tensorFlow2.0中的索引和切片!_第13张图片
tensorflow2.0笔记5:tensorFlow2.0中的索引和切片!_第14张图片
另一种理解,推荐下面的这个。 内 层 括 号 理 解 为 联 合 的 索 引 的 i n d e x 内层括号理解为联合的索引的index index
tensorflow2.0笔记5:tensorFlow2.0中的索引和切片!_第15张图片
tensorflow2.0笔记5:tensorFlow2.0中的索引和切片!_第16张图片

1.6.2、tf.boolean_mask

这个按照具体的true和false来进行索引的
tensorflow2.0笔记5:tensorFlow2.0中的索引和切片!_第17张图片

你可能感兴趣的:(Tensorflow,Deep,Learning)