首页 > 解决方案 > 相当于在 Tensorflow 中设置类似 Numpy 的掩码值?

问题描述

在 numpy 我知道你可以做这样的事情:

array[mask] = -1

其中,给定一个掩码(布尔数组或 0/1),对于掩码中其值为 True 的每个索引,您将数组中的关联索引设置为该值(在本例中为 -1)。

我想知道 Tensorflow 中是否有与上面的示例相同的操作(在基于掩码的张量中设置值)。

提前致谢!

标签: pythonnumpytensorflow

解决方案


您可以执行以下操作。虽然它比 numpy 有点混乱。

选项1

import tensorflow as tf

m = tf.constant([[True, False],[False, True]])
a = tf.constant([[2.,3.],[1.,2.]])
val = 5
b = a * tf.cast(tf.logical_not(m), tf.float32) + val * tf.cast(m, tf.float32)

with tf.Session() as sess:
  print(sess.run(b))

选项 2

m = tf.constant([[True, False],[False, True]])
a = tf.constant([[2.,3.],[1.,2.]])
val = 5
val_arr = tf.ones_like(a)*val

c = tf.where(tf.equal(m,False), a, val_arr)

推荐阅读