TensorFlow 1.0には、貢献している2つのXavier初期化ヘルパーが含まれていることに気付きました。
どちらも同じドキュメントページにリンクしており、同じ署名があります。
tf.contrib.layers.xavier_initializer(uniform=True, seed=None, dtype=tf.float32)
tf.contrib.layers.xavier_initializer_conv2d(uniform=True, seed=None, dtype=tf.float32)
しかし、それらの違いはまったく説明されていません。名前から推測できるのは_conv2d
バージョンは2D畳み込み層に使用する必要がありますが、通常のバージョンを使用した場合、顕著な影響がありますか?
実際には違いはありません。どちらの関数も次の重みの初期化を実装しているためです。
Xavier Glorot and Yoshua Bengio(2010): ディープフィードフォワードニューラルネットワークのトレーニングの難しさを理解しています。 人工知能と統計に関する国際会議。
両方の初期化子は、すべてのレイヤーでグラデーションのスケールをほぼ同じに保つように設計されています。一様分布では、これは最終的にx = sqrt(6. / (in + out)); [-x, x]
の範囲になり、正規分布ではsqrt(3. / (in + out))
の標準偏差が使用されます。