web-dev-qa-db-ja.com

xavier_initializerとxavier_initializer_conv2dの違いは何ですか?

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畳み込み層に使用する必要がありますが、通常のバージョンを使用した場合、顕著な影響がありますか?

10
sunside

実際には違いはありません。どちらの関数も次の重みの初期化を実装しているためです。

Xavier Glorot and Yoshua Bengio(2010): ディープフィードフォワードニューラルネットワークのトレーニングの難しさを理解しています。 人工知能と統計に関する国際会議。

両方の初期化子は、すべてのレイヤーでグラデーションのスケールをほぼ同じに保つように設計されています。一様分布では、これは最終的にx = sqrt(6. / (in + out)); [-x, x]の範囲になり、正規分布ではsqrt(3. / (in + out))の標準偏差が使用されます。

12
Wasi Ahmad