2017-12-15 8 views
1

Ist es möglich, eine eingebaute keras Verlustfunktion symbolisch mit einer Konstante zu multiplizieren? Zum Beispiel wenn ich eine lineare Kombination der Verluste von zwei Ausgaben möchte.Multiplizieren Keras Verlustfunktionen durch Konstante

Ich könnte eine benutzerdefinierte Verlustfunktion schreiben, aber wird es nicht kompiliert werden, da es Python-Code ist, nicht symbolischen Keras? Ich bin auf der Suche nach einer Möglichkeit, es in reinen Keras zu tun (oder TF)

+1

Ja, das ist absolut möglich. Es gibt jedoch mehrere Möglichkeiten, dies zu tun, abhängig davon, was genau Sie erreichen möchten. Könnten Sie vielleicht Ihre Frage ausarbeiten? Wenn Ihr Modell 2 Ausgaben liefert, können Sie eine Liste von Verlusten angeben und optional Gewichte bereitstellen, z. 'loss_weights = [1., 0.2]'. Weitere Informationen finden Sie unter https://keras.io/getting-started/functional-api-guide/#multi-input-and-multi-output-models. – tiao

+0

Danke! Ich konnte das in einer Liste von zu kompilierenden Argumenten nicht finden(), also nahm ich an, dass es nicht dort war! – Akababa

+0

Gern geschehen! Ich habe meinen Kommentar als vollständige Antwort unten hinzugefügt. Wenn es Ihre Frage zufriedenstellend beantwortet hat, bitte akzeptieren :) – tiao

Antwort

3

Wenn Ihr Modell mehr Ausgänge liefert, können Sie, indem Sie eine Liste von Keras losses zum loss Argumente des Modells eine Verlustfunktion für jeden Ausgang zuweisen compile Methode. wenn Ihr Modell der Form ist zum Beispiel

model = Model(inputs=[input_a, input_b], outputs=[output_a, output_b]) 

Sie können es wie so kompilieren:

model.compile(
    optimizer='rmsprop', 
    loss=['binary_crossentropy', 'mean_squared_error'], 
    loss_weights=[1., 0.2] 
) 

Dies wird eine binäre Quer Entropieverlust zur Ausgabe zuweisen output_a und einen mittleren quadratischen Fehler Verlust output_b. Der Verlust, der am Ende minimiert wird, ist eine gewichtete Summe dieser Verluste mit den in loss_weights angegebenen Gewichten.

Wenn die Ausgabeschichten benannt sind, können Sie alternativ auch loss und loss_weights mit Dicts mit dem Namen der Ausgabeschicht als Schlüssel angeben. Dies kann helfen, Mehrdeutigkeiten zu beseitigen, welche Verluste und Gewichte welchen Ausgaben zugewiesen sind.

Weitere Informationen finden Sie unter https://keras.io/getting-started/functional-api-guide/#multi-input-and-multi-output-models.

Verwandte Themen