2017-10-27 1 views
0

Ich habe zunächst meine Gewichte wie folgt:Methoden der Gewichte in Faltungs Neuronale Netze Initialisierung - Python/TensorFlow

def new_weights(shape): 
    return tf.Variable(tf.truncated_normal(shape, stddev=0.05)) 

Aber ich erkannte, dass ich Gewichte hatte -0 wie in der folgenden Abbildung:

Figure 1

Dann habe ich beschlossen, es so zu definieren, und für mich die Gewichte sind akzeptabel:

def new_weights(shape): 
    return tf.Variable(tf.zeros(shape)) 

Figure 2

Ich möchte wissen, was die Implikation der Verwendung von tf.truncated_normal ist und was bedeutet die -zeros? Und wenn Sie irgendwelche Probleme haben, sie so zu initialisieren.

Und zwischen den beiden führte ich, was wäre die beste Methode zur Initialisierung von Gewichten?

Antwort

1

tf.truncated_normal gibt zufällige Werte aus einer abgeschnittenen Normalverteilung aus. Daher haben gute Konvergenzeigenschaften in DNN. Die folgenden Diagramme zeigen den Validierungsverlust (links) und die Validierungsgenauigkeit (rechts) eines CNN im MNIST-Datensatz. Gebrauchte Gewicht Initialisierungen sind wie folgt,

  1. Zero: Wenn alle Gewichte auf 0 gesetzt
  2. Random: Wenn Gewichte
  3. Zufalls völlig zufällig gesetzt zwischen -1 bis +1: Random Gewichte auf der Skala -1 bis +1
  4. Xavier-Glorot Initialisierung

enter image description here

Wie Sie ca n sehen, zufällige Gewichte auf der Skala von -1 bis +1 haben gute Ergebnisse gezeigt. Daher ist es die am häufigsten verwendete Gewicht Initialisierung Methode in DNN.

Referenzen, https://medium.com/@amarbudhiraja/towards-weight-initialization-in-deep-neural-networks-908d3d9f1e02

+0

Okay, aber was das -zeros bedeutet das? Bedeutet das, dass sie zu -1 tendieren? – QuestionsStackOverflow

+0

Was meinst du mit -zeros? –

+0

-0.064785 usw. In tf.truncated_normal – QuestionsStackOverflow

Verwandte Themen