Frage

Meine gewünschte Ausgabe ist keine 1-Hot-Codierung, sondern wie ein 10-Tage-Vektor: [1, 0, 1, 0, 1, 0, 0, 1, 1, 1]und die Eingabe ist wie der normale MNIST -Datensatz.

Ich möchte TensorFlow verwenden, um ein Modell zu erstellen, um dies zu lernen. Welche Verlustfunktion sollte ich dann wählen?

War es hilfreich?

Lösung

Wenn Ihre Klassen sich nicht gegenseitig ausschließen, haben Sie nur mehrere Sigmoidausgänge (anstelle von Softmax -Funktionen, wie in Beispiel -MNIST -Klassifikatoren zu sehen). Jede Ausgabe ist eine separate Wahrscheinlichkeit, dass das Netzwerk der Mitgliedschaft in dieser Klasse zuweist.

Für eine übereinstimmende Verlustfunktion können Sie in TensorFlow das integrierte Gebäude verwenden tf.nn.sigmaid_cross_entropy_with_logits - Beachten Sie, dass es für die Logits - die Eingänge zur Sigmoidfunktion - für die Effizienz funktioniert. Der Link erklärt die beteiligten Mathematik.

Sie möchten weiterhin eine Sigmoidfunktion auf der Ausgangsschicht, denn wenn Sie die Vorhersagen ablesen, wenden Sie jedoch die obige Verlustfunktion auf die an Eingang der Sigmoidfunktion. Beachten Sie, dass dies keine Voraussetzung für Ihr Problem ist. Sie können problemlos eine Verlustfunktion schreiben, die aus den Sigmoidausgängen funktioniert. Nur der integrierte Tensorflow wurde anders geschrieben, um einen kleinen Geschwindigkeitsschub zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top