先日(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:
Usetf.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