ValueError:形状必须为0级,但输入形状为[?,?],[?,?]的'loss / dense_3_loss / if_loss / cond / Switch'(op:'Switch')的等级为2

我尝试如下定义自定义损失函数

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: [?,?],[?,?].

我为二进制分类器写了这个自定义损失。我该如何解决?

wahaha1021 回答:ValueError:形状必须为0级,但输入形状为[?,?],[?,?]的'loss / dense_3_loss / if_loss / cond / Switch'(op:'Switch')的等级为2

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2492936.html

大家都在问