Я попытался определить пользовательскую функцию потерь следующим образом
import tensorflow as tf
from tensorflow import math
def if_loss(y_true, y_pred):
con_1 = math.subtract( math.abs(math.subtract(y_true,y_pred)),0.25)
con_2 = math.abs(math.add( math.subtract(y_true,y_pred),0.75))
y_pred = tf.cond(tf.equal(y_true,1.), lambda y_true,y_pred : math.maximum(0.,con_1),lambda y_true, y_pred: math.maximum(0.,con_2))
loss = tf.keras.losses.binary_crossentropy(y_true,y_pred,from_logits=False)
return loss
, но она показывает ошибку как
ValueError: Shape must be rank 0 but is rank 2 for 'loss/dense_3_loss/if_loss/cond/Switch' (op: 'Switch') with input shapes: [?,?], [?,?].
Я написал эту пользовательскую потерю для двоичного классификатора. как мне решить это?