2017-10-01 2 views
4

In Keras Backend haben wir eine Flagge with_logits in K.binary_crossentropy. Was ist der Unterschied zwischen normaler binärer Crossentropie und binärer Crossentropie mit Logits? Angenommen, ich verwende ein seq2seq-Modell und meine Ausgabesequenz ist vom Typ 100111100011101.Was ist der Unterschied zwischen binärer Crossentropie und binärer Crossentropie mit Logits in Keras?

Was sollte ich für ein rekursives LSTM oder RNN verwenden, um von diesen Daten zu lernen, vorausgesetzt, ich gebe eine ähnliche Sequenz in der Eingabe zusammen mit den Zeitschritten?

Antwort

1

Dies hängt davon ab, ob Sie eine Sigmoid-Schicht kurz vor der Verlustfunktion haben oder nicht.

Wenn es eine Sigmoid-Schicht gibt, werden die Klassenwerte in Wahrscheinlichkeiten ausgedrückt, in diesem Fall sollte from_logitsFalse sein. Die Verlustfunktion wird die Wahrscheinlichkeiten in logits umwandeln, denn das erwartet tf.nn.sigmoid_cross_entropy_with_logits.

Wenn die Ausgabe bereits ein Logit ist (d. H. Der Rohwert), übergeben Sie from_logits=True, es wird keine Transformation durchgeführt.

Beide Optionen sind möglich und die Auswahl hängt von Ihrer Netzwerkarchitektur ab. Übrigens, wenn der Begriff Logit erschreckend scheint, werfen Sie einen Blick auf this question, die es im Detail diskutiert.