スタンドアロンKerasとtf.kerasの違いとは? 〜 #AskTensorFlow より〜:TensorFlow 2+Keras(tf.keras)入門
「スタンドアロンKerasとtf.kerasは何が違うのか?」「tf.kerasが、将来的にTensorFlowから削除される可能性はあるのか?」など、TensorFlow 2.0時代のKerasに関する一般的な疑問と、それへのTensorFlowチームメンバーからの回答をまとめる。
Kerasといえば、TensorFlowをイメージする人が多いだろう。実際、大半のKerasユーザーはそのバックエンドとしてTensorFlowを使っているのではないだろうか。
現実的にTensorFlowとKerasの結び付きは強い。最新のTensorFlow(次期バージョンの2.0も含む)では、Pythonコードでimport tensorflow as tfした後であれば、tf.kerasからKerasの各機能にすぐにアクセスできる。これは、TensorFlow内にKerasの機能が標準で同梱されているためだ。
このTensorFlow同梱版のKerasはtf.kerasと呼ばれている。
しかし、元々のKerasは(TensorFlow専用ではなく)下記の3種類からバックエンドを選択&指定してから使用する仕組みとなっている。
- TensorFlow: グーグルが開発したフレームワーク
- Theano: モントリオール大学のLISA/MILA Labが開発したフレームワーク
- CNTK: マイクロソフトが開発したフレームワーク
誤解/混乱している人も少なくないと思うが、
- TensorFlow同梱版の「tf.keras」: インストールはpip install tensorflow
- 純正版の「スタンドアロンKeras」: インストールはpip install keras
は別々に存在することに注意してほしい。だとすれば、「tf.kerasとスタンドアロンKerasでは、何が異なるのか?」が気になってくる。※2020/05/13追記:現在は、スタンドアロンKeras(=マルチバックエンドKeras)はメンテナンスモードとなって、tf.kerasがメインになっており、本稿の内容は一部異なってきているので注意してほしい。詳しくは「マルチバックエンドKerasの終焉、tf.kerasに一本化」を参照してほしい。
また、Kerasの作者であるFrançois Chollet(@fchollet)氏は、今はグーグル社員である。ということは、「今後のKerasはtf.kerasのみになってしまう可能性があるのか?」と、スタンドアロンKerasの将来性についての疑問も生じる。
上記の通り、Kerasは少し複雑な提供形態や開発状況になっているので、さまざまな疑問が出てくる状況である。このような数々の疑問点について、「YouTube:TensorFlowチャンネル」の#AskTensorFlowシリーズ最新の配信動画(下記リンク先)で、Q&A形式で回答していた。
知りたい人が多い内容だと思うので、本稿ではその内容を文章で書き起こし、筆者なりにまとめた。
ちなみに、#AskTensorFlowシリーズは、ディープラーニングや機械学習の初心者が視聴するのにちょうどよいレベルのTensorFlow紹介動画であり、定期的に発信されているので、興味がある方はぜひチェックしてみてほしい。なお、Twitterでハッシュタグ「#AskTensorFlow」を付けて英語で質問すれば、あなたの疑問もこのシリーズで解説してもらえるかもしれない。
図1 グーグルTensorFlowチームのSoftware EngineerであるAlexandre Passos氏(左)と、同チームのDevelopr AdovocateであるPaige Bailey氏(右)
さっそくKerasに関するQ&Aの内容を見ていこう。質問や回答の内容は読み物として成立するように意訳したので、あらかじめご了承いただきたい。以下、会話調で記述する。
Kerasに関するQ&A
スタンドアロンKerasとtf.kerasは何が違うのでしょうか?
Kerasはtf.kerasとして(図2)、TensorFlow 2.0(2019年7月5日時点ではまだベータ版)に統合されました。
しかし、スタンドアロンKerasは確実に今後も存続します(図3)。
tf.kerasではTensorFlow用の最適化が多く施されていますが、それらの機能はまだスタンドアロンKerasには導入されていません。Kerasの発展について、質問や意見、懸念などがある場合は、ぜひKerasユーザー向けSIG(Special Interest Group:興味を持つ人のための特別グループ)(図4)にご参加の上、お知らせください。
スタンドアロンKerasの全機能は、tf.kerasにも含まれていますか?
シンプルな回答は「いいえ」になります。
スタンドアロンKerasは、例えばTheanoバックエンドやCNTKバックエンドなど、tf.kerasが持っていない機能をたくさん持っています。しかし、全ての便利な機能(例えばオプティマイザー、メトリクス、損失関数、レイヤー、モデル構築APIといった、Kerasを使ってモデルを訓練しデプロイするための機能)は、tf.kerasにも含まれていますのでご安心ください。
もちろん、スタンドアロンKerasとtf.kerasの構文は、全く同じではない(例えば図5)にしても非常に似ています。なので、スタンドアロンKerasに精通しているのであれば、tf.kerasもそのまま使いこなせます。
TensorFlow 2.0は、スタンドアロンKerasにどんな変化をもたらすのでしょうか?
Copyright© Digital Advantage Corp. All Rights Reserved.