ValueError: Shape должен иметь ранг 0, но является рангом 2 для «loss / dens_3_loss / if_loss / cond / Switch» (op: «Switch») с входными формами: [?,?], [?,?] - PullRequest
0 голосов
/ 07 апреля 2020

Я попытался определить пользовательскую функцию потерь следующим образом

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

Я написал эту пользовательскую потерю для двоичного классификатора. как мне решить это?

...