Bridge over troubled Techs.

オープンストリーム CTO 寺田英雄の個人的ブログ

メモ:xavier_initializer_conv2d()とは何か?

TensorFlow(DeepLearning)を今日も勉強中。いろんなサンプルコードを解読しているが、まだまだ分からないことだらけである。今日も未知の関数に出くわした。それは、

tf.contrib.layers.xavier_initializer_conv2d() 

というやつである。こういうのを1個1個調べていくと、時間かかるけど大変勉強にはなる。せっかくなので調べた結果をメモしておく。

  • この関数の目的は、重み行列の初期化関数を与えることである。たいていはコンボリューションに使うフィルタ行列変数の初期化(tf.Variable(initializer))で使われる。
  • この関数は初期化の仕方に特徴があり、行列の各要素をランダムに初期化するが、そこに次のような制約を用いる:
    1. 各階層の勾配スケールを全てだいたい同じにする。
    2. オプションで一様分布(uniform)を指定したときは、要素値xの範囲は [-x, x] ただし、x = sqrt(6./ (in+out))である。
    3. オプションで正規分布(normal)を指定したときは、要素値xの範囲は [-x, x] ただし、x=sqrt(3./(in+out))である。
  • 'Xavier' という名前は、この初期化方法の発案者に由来する。原論文はこちら。和風発音だと「ザビエル」だが、たぶん正確には「ゼイヴィア」が近い。