1. Qiita
  2. Items
  3. TensorFlow

TensorFlowのinitialize_all_variablesがDeprecatedになった件

  • 8
    Like
  • 0
    Comment

先日(2016/11/29)TensorFlowの最新版r0.12がリリースされました。

TensorFlow r0.11で開発していたアプリケーションを本番リリース前のテスト環境として用意したr0.12で実行したところ、起動時に見覚えのない警告メッセージが表示されました。

WARNINGの内容

WARNING:tensorflow:From :1 in .: initialize_all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02.
Instructions for updating:
Use tf.global_variables_initializer instead.

initialize_all_variablesは2017/03/02以降に廃止される予定とのこと。

initialize_all_variablesはチュートリアルやサンプル実装、それにネットの記事などで頻繁に見かける変数初期化命令ですが、3ヶ月後には使えなくなる恐れがあります。

新しい初期化命令

上記WARNINGに記載されている通り、r0.12からはglobal_variables_initializerを使用せよとのこと。

r0.12で試してみた

>>> tf.__version__
'0.12.0-rc0'

まずはもう一度従来の初期化命令であるinitialize_all_variablesを実行。

>>> tf.Session().run(tf.initialize_all_variables())

WARNING:tensorflow:From <stdin>:1 in <module>.: initialize_all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02.
Instructions for updating:
Use `tf.global_variables_initializer` instead.

やはりWARNING発生。

次に新しい初期化命令のglobal_variables_initializerを実行。

>>> tf.Session().run(tf.global_variables_initializer())
>>> 

こちらはWARNINGも無く正常に実行終了。

r0.11でも試してみた

>>> tf.__version__
'0.11.0'

まずは従来の初期化命令であるinitialize_all_variablesを実行。

>>> tf.Session().run(tf.initialize_all_variables())
>>> 

これは当然正常終了する。

次に新しい初期化命令のglobal_variables_initializerを実行してみる。

>>> tf.Session().run(tf.global_variables_initializer())

AttributeError: module 'tensorflow' has no attribute 'global_variables_initializer'

global_variables_initializerはr0.11ではまだ実装されていないためエラーになる。

まとめ

r0.11を使い続けるならinitialize_all_variablesを使うしかない。
r0.12に乗り換えるならglobal_variables_initializerに早めに変更しよう。

どうしても共通化したい場合

r0.11とr0.12でどうしても共通化したければinitialize_variablesを使おう。
この命令は、初期化すべき変数をリストで指定する必要があるが、
少なくともr0.10からr0.12までは互換性が保たれておりDeprecatedにもなっていないので、
当面は使い続けられるらしい。

r0.12のその他の変更点

こちらからどうぞ。
TensorFlow v0.12.0 RC0