0

Ich arbeite derzeit mit einem Faltungs neuronalen Netzwerk in Theano gebaut. Dropout ist eine Regularisierungstechnik, bei der Knotenausgänge mit einer bestimmten Wahrscheinlichkeit maskiert werden, und nach meinem Verständnis sollten die Masken sowohl in Vorwärtsrichtung als auch in Rückwärtsausbreitung angewendet werden.Implementieren von Dropout in Theano

Da ich gerade in Theano arbeite, wird der Rückpropagationsschritt durch die T.grad-Funktion ersetzt, die eine automatische Differenzierung verwendet, um den Gradienten des Modells zu berechnen. In den wenigen Beispielen, die ich online gefunden habe, maskieren sie nur die Werte in der Vorwärtsrichtung und berücksichtigen die Ausfallmaske während des Gradientenberechnungsschritts überhaupt nicht. Was für Auswirkungen hat das auf das Netzwerk und wenn ich die Maske in die Gradientenberechnung aufnehmen wollte, wie würde ich das machen? Der Code, den ich jetzt habe, basiert hauptsächlich auf dem Code, den Lisa Lab in ihrem Deep-Learning-Tutorial geliefert hat.

+0

normalerweise sollten solche Fragen einen Code enthalten. Ich würde vorschlagen, mehr Beispiele zu betrachten. Schau dir "Lasagne" an ... es ist ein Framework, das auf der Oberseite von Theano mit anständiger Unterstützung und Code gebaut wurde, den du dir ansehen kannst. Bei Verwendung von Dropout werden nur die aktiven Einheiten aktualisiert. Während des Tests werden alle Einheiten verwendet, aber die Ausgänge werden entsprechend dem Dropout-Verhältnis skaliert. – user1269942

+0

Gibt es einen Grund, warum Sie dies in reinem Theano vs. [Lasagne] (https://github.com/Lasagne/Lasagne) tun? Der Aussteiger in Lasagne ist ein One-Liner. – gobrewers14

+0

@ user1269942 Eine Menge des Codes, den ich habe, ist nicht so nützlich isoliert, so dass ich nichts nutzlos posten wollte. Aber danke, ich werde definitiv Lasagne ausprobieren oder zumindest eine Menge davon haben, wie sie es umgesetzt haben. –

Antwort

0

Der Gradient der Multiplikation zweier Variablen wie x * y, x hat y Gradienten und umgekehrt. Dropout verwendet die Maskierung einer Ausgabe der Knoten, die die Multiplikation von Maske und Ausgabe des Knotens ist. Während der Abschluss wird es von Theano selbst kümmern. dropout implementation in theano