TensorFlow:是否可以在忽略NaN值的同时减少总和?
假设我有一个二维张量TensorFlow:是否可以在忽略NaN值的同时减少总和?,tensorflow,Tensorflow,假设我有一个二维张量(批量大小,损失大小),我希望得到每个数据样本的每个损失维度之和,这可以通过tf来实现。减少平均值(张量,轴=-1) 但是,如果在我的张量中有NaN值,并且我想在计算和时忽略这些NaN值,该怎么办?有人知道怎么做吗 另外,我知道我们可以使用tf.boolean\u mask来匹配nan,但是如果我简单地使用tensor=tf.boolean\u mask(tensor,tf.logical\u not(tf.is\u nan(tensor)),输出将被压缩成一个一维,这不是我
(批量大小,损失大小)
,我希望得到每个数据样本的每个损失维度之和,这可以通过tf来实现。减少平均值(张量,轴=-1)
但是,如果在我的张量中有NaN值,并且我想在计算和时忽略这些NaN值,该怎么办?有人知道怎么做吗
另外,我知道我们可以使用tf.boolean\u mask
来匹配nan,但是如果我简单地使用tensor=tf.boolean\u mask(tensor,tf.logical\u not(tf.is\u nan(tensor))
,输出将被压缩成一个一维,这不是我想要的
非常感谢!您可以使用将张量中的NaN值替换为零,同时保留原始形状:
tensor = ...
# Replace all NaN values with 0.0.
tensor_without_nans = tf.where(tf.is_nan(tensor), tf.zeros_like(tensor), tensor)
sum_ignoring_nans = tf.reduce_sum(tensor_without_nans, axis=-1)