versuchen, wie Verlustfunktion (glatter L1 Verlust) in keras anpassen unterkeras: Glatt L1 Verlust
ValueError: Shape must be rank 0 but is rank 5 for 'cond/Switch' (op: 'Switch') with input shapes: [?,24,24,24,?], [?,24,24,24,?].
from keras import backend as K
import numpy as np
def smooth_L1_loss(y_true, y_pred):
THRESHOLD = K.variable(1.0)
mae = K.abs(y_true-y_pred)
flag = K.greater(mae, THRESHOLD)
loss = K.mean(K.switch(flag, (mae - 0.5), K.pow(mae, 2)), axis=-1)
return loss
Vielen Dank. Aber ich habe immer noch den Fehler: ** ValueError: Shape muss Rang 0 sein, ist aber Rang 5 für 'cond/Switch' (op: 'Switch') mit Eingabeformen: [?, 24,24,24,?], [ ?, 24,24,24,?]. ** –
@yuanzhou Das bedeutet, dass die Netzwerkausgabe oder Ihre Ziele falsche/inkompatible Formen haben. –
Sorry, ich denke nicht, dass es das Problem mit der Form der Ausgabe und Ziele ist, wenn ich andere Verlustfunktion verwende, funktioniert es gut. Der Fehler trat nur unter Verwendung der angepassten smoothL1 auf. –