So i want to calculate the mean of the elements that are greater than a fixed threshold (threshold=0.8).
Task in numpy :
X = np.array([[0.11,0.99,0.70]])
print(np.nanmean(X[X>0.8]))
Out : 0.99
What is the equivalent in tensorflow without converting the tensor ‘c’ to a numpy array?
Exmp :
c = tf.constant([[0.11,0.99,0.70]])
tf.reduce_mean(tf.where(tf.greater(c,(tf.constant(0.8, dtype=tf.float32)))))
the output is equal to 0 !
Output : <tf.Tensor: shape=(), dtype=int64, numpy=0>
>Solution :
You don’t need tf.greater and tf.where.
c = tf.constant([[0.11,0.99,0.70]])
# Or : tf.reduce_mean(c[c > 0.8])
tf.reduce_mean(c[c > tf.constant(0.8, dtype=tf.float32)])
You can use tf.boolean_mask as an alternative:
c = tf.constant([[0.11,0.99,0.70]])
mask = c > 0.8
tf.reduce_mean(tf.boolean_mask(tensor, mask))
Output : <tf.Tensor: shape=(), dtype=float32, numpy=0.99>