2017-07-03 4 views
1

Ich baue gerade ein CNN im Tensorflow und initialisiere meine Gewichtsmatrix mit einer He-Normalgewichts-Initialisierung. Ich bin mir jedoch nicht sicher, wie ich meine Bias-Werte initialisieren soll. Ich verwende ReLU als meine Aktivierungsfunktion zwischen jeder Faltungsschicht. Gibt es eine Standardmethode zur Initialisierung von Bias-Werten?Anfängliche Bias-Werte für ein neuronales Netzwerk

# Define approximate xavier weight initialization (with RelU correction described by He) 
def xavier_over_two(shape): 
    std = np.sqrt(shape[0] * shape[1] * shape[2]) 
    return tf.random_normal(shape, stddev=std) 

def bias_init(shape): 
    return #??? 

Antwort

3

die Vorurteile initialisieren. Es ist möglich und üblich, die Vorspannungen auf Null zu initialisieren, da die Asymmetrieunterbrechung durch die kleinen Zufallszahlen in den Gewichten bereitgestellt wird. Für ReLU-Nichtlinearitäten verwenden einige Leute Leute, die kleinen konstanten Wert wie 0,01 für alle Neigungen verwenden, weil dies sicherstellt, dass alle ReLU-Einheiten am Anfang feuern und deshalb einen Gradienten erhalten und verbreiten. Es ist jedoch nicht klar , wenn dies eine konsistente Verbesserung bietet (tatsächlich scheinen einige Ergebnisse anzuzeigen, dass dies schlechter abschneidet) und es ist einfacher 0 Bias-Initialisierung zu verwenden.

Quelle: http://cs231n.github.io/neural-networks-2/

+0

Dank genau das, was ich gesucht habe! –