tensorflow2.x学习笔记三:Tensor(张量)的定义、切片

一、创建张量

tensorflow2.x学习笔记三:Tensor(张量)的定义、切片_第1张图片
tensorflow2.x学习笔记三:Tensor(张量)的定义、切片_第2张图片
tensorflow2.x学习笔记三:Tensor(张量)的定义、切片_第3张图片

二 ,索引切片

  • 张量的索引切片方式和numpy几乎是一样的。切片时支持缺省参数和省略号。

  • 对于tf.Variable,可以通过索引和切片对部分元素进行修改。

  • 对于提取张量的连续子区域,也可以使用tf.slice.

  • 此外,对于不规则的切片提取,可以使用tf.gather,tf.gather_nd,tf.boolean_mask。

  • tf.boolean_mask功能最为强大,它可以实现tf.gather, tf.gather_nd的功能,并且tf.boolean_mask还可以实现布尔索引。

  • 如果要通过修改张量的某些元素得到新的张量,可以使用tf.where, tf.scatter_nd。

以上切片方式相对规则,对于不规则的切片提取,可以使用tf.gather, tf.gather_nd, tf.boolean_mask。

考虑班级成绩册的例子,有4个班级,每个班级10个学生,每个学生7门科目成绩。可以用一个4107的张量来表示。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上tf.gathertf.gather_nd的功能也可以用tf.boolean_mask来实现。
在这里插入图片描述
在这里插入图片描述
tensorflow2.x学习笔记三:Tensor(张量)的定义、切片_第4张图片

  • 以上这些方法仅能提取张量的部分元素值,但不能更改张量的部分元素值得到新的张量。

  • 如果要通过修改张量的部分元素值得到新的张量,可以使用tf.wheretf.scatter_nd。

  • tf.where可以理解为if的张量版本,此外它还可以用于找到满足条件的所有元素的位置坐标。

  • tf.scatter_nd的作用和tf.gather_nd有些相反,tf.gather_nd用于收集张量的给定位置的元素,

  • tf.scatter_nd可以将某些值插入到一个给定shape的全0的张量的指定位置处。
    tensorflow2.x学习笔记三:Tensor(张量)的定义、切片_第5张图片
    tensorflow2.x学习笔记三:Tensor(张量)的定义、切片_第6张图片
    tensorflow2.x学习笔记三:Tensor(张量)的定义、切片_第7张图片

参考文章:eat_tensorflow2_in_30_days

关于tf.wheretf.boolean_mask的具体解释请看我的另一篇博客:tensorflow2.x学习笔记二十二:tf.where和tf.boolean_mask的使用

你可能感兴趣的:(tensorflow2.x学习笔记三:Tensor(张量)的定义、切片)