2017-10-27 7 views
0

次のように私が最初に私の重みを設定します。方法 - パイソン/ TensorFlow

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

をしかし、私は、私は重み-0次の図のように持っていたことに気づい:

Figure 1

は、その後、私はそのように定義することを決めた、と私のための重みは、より受け入れられる:

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

Figure 2

tf.truncated_normalの使用の意味と、-zerosの意味は何ですか?そして、もしあなたがこのような初期化に問題があれば。

私が紹介した2つの方法の間に、ウェイトを初期化する最良の方法は何でしょうか?

答えて

1

tf.truncated_normalは、切り捨て正規分布からランダム値を出力します。したがって、DNNでは良好な収束特性を有する。以下のグラフは、MNISTデータセット上のCNNの検証損失(左)と検証精度(右)です。次のように使用される重みの初期化は、

  1. ゼロである:すべての重みが0
  2. ランダムに設定されている場合:重みは完全にランダムに設定されている
  3. ランダム間-1 +1全規模のランダム重み-1 +1
  4. ザビエル-Glorot初期

enter image description here

にあなたがCAとして1から+1のスケールでランダムな重みが良い結果を示しています。したがって、これはDNNで最も一般的に使用される重量初期化方法です。

参考文献、 https://medium.com/@amarbudhiraja/towards-weight-initialization-in-deep-neural-networks-908d3d9f1e02

+0

わかりましたが、-zerosは何を意味するのでしょうか?彼らは-1になるという意味ですか? – QuestionsStackOverflow

+0

-zerosの意味は? –

+0

-0.064785など。tf.truncated_normal – QuestionsStackOverflow