2017-05-22 3 views
-1

Ich lerne tf.nn.dropout Befehl. Die Dokumentation sagt, dass mit der Wahrscheinlichkeit keep_prob das Eingabeelement um 1/keep_prob hochskaliert ausgegeben wird, ansonsten 0 ausgibt. Die Skalierung ist so, dass die erwartete Summe unverändert ist. Kann mir bitte jemand erklären, warum wir 1/keep_prob nehmen. Und wenn ich den Wert 0.1 festlege. Bedeutet das, dass ich nur 10 Prozent Knoten halte?In tf.nn.dropout, was ist der Effekt von keep_prob Argument?

Antwort

0

Der Skalierungsfaktor wird auf 1/keep_prob weil der Ausfall sollte bei Prüfung oder Auswertung deaktiviert wird. Siehe die High-Level-API auf Schichten von Tensorflow: tf.layers.dropout.

Während des Testens oder Bewertung, die der Aktivierung jeder Einheit ist nicht skalierte. Der Skalierungsfaktor von 1/keep_prob während des Trainings stellt sicher, dass die erwartete Aktivierung (keep_prob * (1/keep_prob) = 1) die gleiche wie beim Testen ist. Weitere Informationen finden Sie in diesem paper.

Angenommen, Sie haben 10 Einheiten in der Schicht und setzen das keep_prob auf 0,1, dann wird die Aktivierung von 9 zufällig ausgewählten Einheiten von 10 auf 0 gesetzt und die verbleibende wird um den Faktor 10 skaliert Denken Sie eine genauere Beschreibung ist, dass Sie nur die Aktivierung von 10 Prozent der Knoten halten.

Verwandte Themen