如何在 tf.where tensorflow 中给出否定条件

how to give negative conditions in tf.where tensorflow

我想提取不满足特定条件的张量的索引。

例如,我想要所有列都不为零的张量行的索引。

idx = tf.where(!(x[:,0]==x[:,1]==x[:,2]==0))

还有其他更好的方法来提取此类信息吗?

提取所有元素都不为0的张量的索引相当于寻找元素绝对值之和不为0的张量(在你的张量元素可以为负的情况下)。

x = tf.constant([[2.0, 0., 4.0], [0., 0., 2.0], [-2.0, 0., 1.0]])

idx = tf.where(tf.reduce_sum(tf.abs(x), axis=0)!=0)

输出:

>>>print(idx)
tf.Tensor(
[[0]
 [2]], shape=(2, 1), dtype=int64)
如果所有值都是正数,

tf.abs 是无用的。

您还可以使用 tf.math.logical_not 来反转条件:

>>>print(tf.math.logical_not(x==0))
tf.Tensor(
[[ True False  True]
 [False False  True]
 [ True False  True]], shape=(3, 3), dtype=bool)