2017-03-08 4 views
0

Ich möchte meine benutzerdefinierte Verlustfunktion entwerfen, die nicht nur zwei Eingaben enthält (y_real und y_pred), aber ich weiß nicht, ob ich es tun kann und wie.Verlustfunktion mit ausgeprägtem Gewicht für jeden Eingang

Ich habe die Antworten über Verlust-Funktion durchlaufen, alle von ihnen nur Eingabe y_real und y_pred.

Aber in meinen Projekten sind der Verlust der wahren und falschen Vorhersage in Fällen verschieden, so dass X1 mit (Verlust_T1, Verlust_F1), X2 mit (Verlust_T2, Verlust_F2).

Also für meine Verlustfunktion muss ich vier Variablen eingeben (y_real, y_pred, loss_T, loss_F). Die Loss_T, Loss_F sind innerhalb von X (jede Zeile meiner Daten) als eines der Features.

feature1 feature2 Feature3 Loss_T Loss_F y X1
X2
X3

Gibt es so, wie ich das tun kann?

Dank Ihrer guten Beiträge.

+0

Meinen Sie benötigen Sie unterschiedliche Gewichte für verschiedene Proben (ein ganzer Vektor zum Beispiel) unterschiedlicher oder unterschiedlicher Gewichte für verschiedene Attribute? (Elemente eines Vektors). – maz

+0

Kann versuchen, eine mathematische Formel für Ihren Verlust zu finden? – kaufmanu

+1

Wenn loss_T und Loss_F Merkmale sind, wie Sie sagen, füttern Sie ihre Werte an einige Platzhalter und verwenden Sie grundlegende mathematische Operationen von Tensorflow, um Ihre Verlustfunktion aufzubauen (wie tf.add (x, y), tf (x, y), tf.square (x), tf.reduce_sum (x) etc ...). Tensorflow würde sich um Backpropagation oder andere Updates kümmern. – rajat

Antwort

1

Die Tensorflow API auf einer niedrigeren Ebene kann für Sie arbeiten. Zum Beispiel nimmt Optimizer.optimize_loss einen Verlusttensor, der nur die Ausgabe der Verlustfunktion ist, und minimiert sie. Also, wenn Sie optimize_loss direkt verwenden, können Sie Ihre Verlustfunktion in irgendeiner komplizierten Weise bauen, die Sie möchten.

+0

Ich versuche diesen Weg, wie Sie vorschlagen. Wenn ich If-Else in der Verlustfunktion verwendet, meldet es Fehler, die keine Gradienten für eine Variable zur Verfügung gestellt. Wie auch immer, um dieses Problem zu lösen? –

+0

Haben Sie versucht, 'tf.cond' anstelle von if-else zu verwenden? If-else wird von der automatischen Differenzierung von Tensorflow nicht unterstützt. –

+0

Das ist eine gute Idee, ich werde diese Methode versuchen. –

Verwandte Themen