Ich versuche, eine neue Verlustfunktion meiner eigenen zu implementieren. Wenn ich versuchte, es zu debuggen (oder in es zu drucken), habe ich bemerkt, dass es nur einmal bei der Modellerstellung des Codes aufgerufen wird.Benutzerdefinierte Verlustfunktion Implementierung
Wie kann ich wissen, was y_pred und y_true enthält (Formen, Daten etc ..), wenn ich meinen Code in diese Funktion ausführen kann, während das Modell passend?
Ich schrieb diese Verlustfunktion:
def my_loss(y_true, y_pred):
# run over the sequence, jump by 3
# calc the label
# if the label incorrect punish
y_pred = K.reshape(y_pred, (1, 88, 3))
y_pred = K.argmax(y_pred, axis=1)
zero_count = K.sum(K.clip(y_pred, 0, 0))
one_count = K.sum(K.clip(y_pred, 1, 1))
two_count = K.sum(K.clip(y_pred, 2, 2))
zero_punish = 1 - zero_count/K.count_params(y_true)
one_punish = 1- one_count/ K.count_params(y_true)
two_punish = 1- two_count/ K.count_params(y_true)
false_arr = K.not_equal(y_true, y_pred)
mask0 = K.equal(y_true, K.zeros_like(y_pred))
mask0_miss = K.dot(false_arr, mask0) * zero_punish
mask1 = K.equal(y_true, K.ones_like(y_pred))
mask1_miss = K.dot(false_arr, mask1) * one_punish
mask2 = K.equal(y_true, K.zeros_like(y_pred)+2)
mask2_miss = K.dot(false_arr, mask2) * two_punish
return K.sum(mask0_miss) + K.sum(mask1_miss) + K.sum(mask2_miss)
Es scheitert an:
theano.gof.fg.MissingInputError: A variable that is an input to the graph was
neither provided as an input to the function nor given a value. A chain of
variables leading from this input to an output is [/dense_1_target, Shape.0].
This chain may not be unique
Backtrace when the variable is created:
Wie kann ich es beheben?
konnten zeigen Sie die entsprechende Fehlfunktion Code, so dass wir etwas weiter zu gehen haben? Ihre Frage lautet im Moment: "Wie mache ich _A_ wenn _B_ nicht funktioniert?" anstelle von "wie bekomme ich _B_ wieder arbeiten?" –