2024-06-02 07:22:14 发布
网友
这可能是一个基本问题,但我找不到解决办法:
我需要计算张量的平均值,忽略任何非有限值。在
例如,mean([2.0, 3.0, inf, 5.0])应该返回3.333,而不是inf也不是2.5。在
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。在
sess.run(tf.reduce_mean([2.0, 3.0, inf, 5.0]))
您可以使用^{}和boolean_mask的组合。在
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值。在
is_finite
NaN
给出的答案几乎是正确的。关于忽略非有限值的问题,答案只忽略无限值。它们不是一回事,特别是关于nan。在
若要实际忽略任何非有限值(包括nan),请使用以下稍微简单的行:
mymean = tf.reduce_mean(tf.boolean_mask(x, tf.is_finite(x))
您可以使用^{} 和
boolean_mask
的组合。在请注意,
is_finite
也将删除NaN
值。在给出的答案几乎是正确的。关于忽略非有限值的问题,答案只忽略无限值。它们不是一回事,特别是关于nan。在
若要实际忽略任何非有限值(包括nan),请使用以下稍微简单的行:
相关问题 更多 >
编程相关推荐