这可能是一个基本问题,但我无法找到解决方案:
我需要计算张量的平均值忽略任何非有限值。
例如mean([2.0, 3.0, inf, 5.0])
应该返回3.333
而不是inf
也不会2.5
。
我已尝试sess.run(tf.reduce_mean([2.0, 3.0, inf, 5.0]))
,但会返回inf
。
答案 0 :(得分:5)
您可以使用is_finite
和boolean_mask
的组合。
import tensorflow as tf
x = tf.constant([2, 3, float('Inf'), 5])
mymean = tf.reduce_mean(tf.boolean_mask(x, tf.is_finite(x)))
sess = tf.Session()
sess.run(mymean)
请注意,is_finite
也会删除NaN
值。
答案 1 :(得分:5)
给出的答案几乎是正确的。关于忽略非有限值的问题,答案只忽略无限值。它们不是一回事,特别是 nan 。
要实际忽略任何非有限值(包括nan),请使用这个稍微简单的行:
mymean = tf.reduce_mean(tf.boolean_mask(x, tf.is_finite(x))