张量流中的条件减法

Conditional substract in tensorflow

我正在尝试计算 tf.keras 中的自定义 MSE,例如:

def custom_mse(y_true, y_pred):
    return tf.reduce_mean(tf.square(y_true - y_pred), axis=-1) 

但我想计算差值 y_true - y_pred,除非 y_true 的值等于 -99.0

我该怎么做?

如果 y_true == -99.0,您希望函数 return 做什么?

你能不这样做吗?

def custom_mse(y_true, y_pred):
    #check if the batch of y_true has -99
    if -99 in y_true:
          #do whatever you like with the batch
          return #whatever
    return tf.reduce_mean(tf.square(y_true - y_pred), axis=-1) 

如果您只想对 y_true 不是 -99 的误差进行平均,我想您可以简单地这样做:

def custom_mse(y_true, y_pred):
        return tf.reduce_mean(tf.square(y_true - y_pred)[y_true != -99], axis=-1) 

干杯,

凯文

另一种方式。

def custom_mse(y_true, y_pred):
    return tf.cond(y_true !=  -99.0, lambda: tf.reduce_mean(tf.square(y_true - y_pred), axis=-1),
                                     lambda: #Add logic)