TensorFlowの初期化に関する問題
2017-02-28
初期化関連でエラーが多くて手を焼いているので何とかしたいんですが,なかなかうまくいかないもんですね.
エラー内容
Attempting to use uninitialized value...
とにかくたくさん見てうんざり.
sess = tf.Session()
sess.run(global_variables_initializer())
全ての変数を初期化できるはずですが,この関数での初期化はどうやら現段階で完璧ではないらしく,この処理に漏れる形になっていると初期化されてないよってことでエラーが出るんじゃないかと思います.
とりあえずの対策
重みやバイアスに関して
initial = tf.truncated_normal(shape, stddev=0.1)
weight = tf.Variable(initial).initialized_value())
的な感じで初期化しています,たぶん.
最適化関数に関して
AdamOptimizer や MomentumOptimizer では恐らく引数に関して未初期化のエラーがでるっぽいので,回避するために GradientDescentOptimizer を仮使用しています.
tf.report_uninitialized_variables()
という関数が v0.9 辺りからあるらしいですが,利用条件が限定的なのか使い方がいまいち明確でないのでまだ試してません.