Conditional substract in tensorflow
I'm trying to calculate a custom MSE in tf.keras, such as:
def custom_mse(y_true, y_pred):
return tf.reduce_mean(tf.square(y_true - y_pred), axis=-1)
But I want to calculate the difference y_true - y_pred
, except when values of y_true
are equal to -99.0
.
How could I do this?
What do you want the function to return if y_true == -99.0
?
Can you not do this?
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)
If you meant to average only the errors where y_true is not -99, I guess you can simply do this:
def custom_mse(y_true, y_pred):
return tf.reduce_mean(tf.square(y_true - y_pred)[y_true != -99], axis=-1)
Cheers,
Keivan
Another way.
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)