2017-08-23 2 views
0

Ich habe eine CNN für eine Multilabel-Klassifizierung Problem und als eine Verlust-Funktion verwende ich die tf.nn.sigmoid_cross_entropy_with_logits.Tensorflow: Ausgangswahrscheinlichkeiten von Sigmoid Kreuz Entropie Verlust

Von der cross entropy equation würde ich erwarten, dass die Ausgabe Wahrscheinlichkeiten jeder Klasse wäre, aber stattdessen bekomme ich floats in der (-∞, ∞).

Nach einigem googlen fand ich, dass aufgrund einer internen Normalisierungsoperation jede Reihe von Logits als Wahrscheinlichkeit interpretierbar ist, bevor sie der Gleichung zugeführt wird.

Ich bin verwirrt darüber, wie ich tatsächlich die Posterior-Wahrscheinlichkeiten anstelle von Schwimmern ausgeben kann, um eine ROC zu zeichnen.

Antwort

0

tf.sigmoid(logits) gibt Ihnen die Wahrscheinlichkeiten.

Sie können in der Dokumentation von tf.nn.sigmoid_cross_entropy_with_logits sehen, dass tf.sigmoid die Funktion ist, die die Logits zu Wahrscheinlichkeiten normalisiert.

+0

Angenommen, [0,1,10,100] und [1,100,1000] zu haben. Wird die Sigmoide auf sie angewendet, ist die Differenz zwischen 10 und 100 nicht größer als die Differenz zwischen 100 und 1000, obwohl die Szenarien in Bezug auf relevante Werte äquivalent sind. – lacrima

+0

Ich verstehe Ihren Kommentar nicht. Könnten Sie es näher erläutern, um es klarer zu machen? "abs (Sigmoid (10) - Sigmoid (100)) >> abs (Sigmoid (100) - Sigmoid (1000))" aber ich verstehe nicht, wie das für die Antwort/ursprüngliche Frage relevant ist. – GeertH

+0

Ich meine, wenn es 3 Auswahlmöglichkeiten mit den zugehörigen Werten [0,1,10,100] (Fall 1) oder [1,100,1000] (Fall 2) gibt, dann werden durch die Anwendung der Sigmoidfunktion die Wahrscheinlichkeiten nicht in gleicher Weise zugeordnet Fälle 1,2 wegen des oben erwähnten Unterschieds. Ich mag mich irren, es ist nur ein Gedanke. Das ist der Grund, warum ich die Sigmoid-Funktion abgelehnt habe und die Frage gestellt habe :) – lacrima

Verwandte Themen