我尝试如下定义自定义损失函数
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),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: [?,?],[?,?].
我为二进制分类器写了这个自定义损失。我该如何解决?