Gibt es allgemeine Richtlinien zum Platzieren von Dropout-Layern in einem neuronalen Netzwerk?
neural-networks
dropout
Franck Dernoncourt
quelle
quelle
Antworten:
In der Originalarbeit, die Dropout-Schichten vorschlug, von Hinton (2012) , wurde Dropout (mit p = 0,5) für jede der vollständig verbundenen (dichten) Schichten vor der Ausgabe verwendet. es wurde nicht auf den Faltungsschichten verwendet. Dies wurde die am häufigsten verwendete Konfiguration.
Neuere Forschungen haben gezeigt, dass das Anwenden von Dropout auch auf Faltungsschichten einen gewissen Wert hat, obwohl dies bei viel niedrigeren Niveaus der Fall ist: p = 0,1 oder 0,2. Dropout wurde nach der Aktivierungsfunktion jeder Faltungsschicht verwendet: CONV-> RELU-> DROP.
quelle
relu
Aktivierung gefolgt von einer Max-Pooling-Schicht die (2D-) Dropout-Schicht unmittelbar nach der Faltung oder nach der Max-Pooling-Schicht oder beidem verlaufen oder spielt dies keine Rolle?RELU
auf jeder CONV-Ebene angewendet wurde. Ich glaube nicht, dass sie den Effekt des Hinzufügens von Dropouts nach Max-Pooling-Schichten untersucht haben.Vor jeder linearen Projektion. Siehe Srivastava et al. (2014) .
quelle
Das Originalpapier schlug Dropout-Schichten vor, die auf jeder der vollständig verbundenen (dichten) Schichten vor der Ausgabe verwendet wurden. es wurde nicht auf den Faltungsschichten verwendet.
Wir dürfen keine Dropout-Schicht nach der Faltungsschicht verwenden, da wir den Filter über die Breite und Höhe des Eingabebildes schieben. Wir erstellen eine zweidimensionale Aktivierungskarte, die die Antworten dieses Filters an jeder räumlichen Position angibt. Wenn die Dropout-Schicht zufällige Neuronen neutralisiert (auf Null stellt), besteht die Möglichkeit, dass sehr wichtige Merkmale in einem Bild in unserem Trainingsprozess verloren gehen.
quelle
Wenn ich mich nicht irre, können Sie es nach der Nichtlinearität jeder Zelle hinzufügen:
Die erste Zeile ist die Aktivierungsfunktion, und die letzte Zeile fügt das Dropout zum Ergebnis hinzu. Bitte beziehen Sie sich auf diesen Blog . Hoffe das hilft.
Oder Sie können es in die Eingabe einbetten, wie in diesem Snippet:
Quelle: https://github.com/spro/practical-pytorch/blob/master/seq2seq-translation/seq2seq-translation.ipynb
Technisch gesehen können Sie die Dropout-Ebene am Ende eines Blocks hinzufügen, beispielsweise nach der Faltung oder nach der RNN-Codierung.
quelle