一、创建张量
二 ,索引切片
-
张量的索引切片方式和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.gather和tf.gather_nd的功能也可以用tf.boolean_mask来实现。
-
以上这些方法仅能提取张量的部分元素值,但不能更改张量的部分元素值得到新的张量。
-
如果要通过修改张量的部分元素值得到新的张量,可以使用
tf.where和tf.scatter_nd。 -
tf.where可以理解为if的张量版本,此外它还可以用于找到满足条件的所有元素的位置坐标。 -
tf.scatter_nd的作用和tf.gather_nd有些相反,tf.gather_nd用于收集张量的给定位置的元素, -
而
tf.scatter_nd可以将某些值插入到一个给定shape的全0的张量的指定位置处。
参考文章:eat_tensorflow2_in_30_days
关于tf.where,tf.boolean_mask的具体解释请看我的另一篇博客:tensorflow2.x学习笔记二十二:tf.where和tf.boolean_mask的使用