In einigen Tutorials wurde festgestellt, dass die "Xavier" -Gewichtsinitialisierung (Artikel: Verständnis der Schwierigkeit, tiefe Feedforward-Neuronale Netze zu trainieren ) ein effizienter Weg ist, um die Gewichte von Neuronalen Netzen zu initialisieren.
Für vollständig verbundene Ebenen gab es in diesen Tutorials eine Faustregel:
Dabei ist die Varianz der Gewichte für eine Schicht, die mit einer Normalverteilung initialisiert ist, und n i n , n o u t ist die Anzahl der Neuronen in der Elternschicht und in der aktuellen Schicht.
Gibt es ähnliche Faustregeln für Faltungsschichten?
Ich habe Mühe herauszufinden, was am besten wäre, um die Gewichte einer Faltungsschicht zu initialisieren. Beispiel: In einer Ebene, in der die Form der Gewichte (5, 5, 3, 8)
so ist wie die Kernelgröße 5x5
, wird das Filtern von drei Eingangskanälen (RGB-Eingang) und das Erstellen von 8
Feature-Maps 3
als Anzahl der Eingangsneuronen betrachtet. Oder eher 75 = 5*5*3
, weil die Eingabe 5x5
Patches für jeden Farbkanal sind?
Ich würde beides akzeptieren, eine spezifische Antwort zur Klärung des Problems oder eine "allgemeinere" Antwort, die den allgemeinen Prozess erklärt, die richtige Initialisierung von Gewichten zu finden und vorzugsweise Quellen zu verknüpfen.
Ich stimme Erics Antwort hier zu. Ich nehme auch das "sqrt" des Begriffs und nicht nur diesen Begriff. Trotzdem kann das Training zum Stillstand kommen, wenn Sie Sigmoid tief in Ihrem Netz mit dem "RelU" -Ausgang verbinden. Dies liegt an der unbegrenzten "Relu" -Ausgabe, die dazu führen kann, dass der Gradient bei Sigmoid auf 0 fällt und kein Lernen stattfindet. In den Fällen habe ich also einen "scaleDown" -Faktor für mein Netz, der die Initialisierungsabweichung um diesen Faktor belastet. Ich stelle die Gewichte empirisch so lange ein, bis das Lernen stattfindet. Eine einfache Möglichkeit besteht darin, das Modell unmittelbar nach einer Iteration zu speichern und sich die RELU-Ausgabe (die mit Sigmoid verbunden ist) anzusehen. Stellen Sie die Gewichte so lange ein, bis diese RELU-Ausgabe angemessen ist. Und dann benutze diese Gewichte zum Training. Es ist ein guter Anfang. Wenn es nach einigen Iterationen immer noch zusammenbricht, beschweren Sie sie etwas mehr, bis Sie Stabilität erreichen. Es ist nur ein Hack, den ich benutzt habe. Es hat bei mir für mein Setup funktioniert. Also teile meine Erfahrungen. Verschiedene Dinge funktionieren für verschiedene Setups.
Also viel Glück!
quelle