如何在 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)
我想提取不满足特定条件的张量的索引。
例如,我想要所有列都不为零的张量行的索引。
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)