検索
連載

スタンドアロンKerasとtf.kerasの違いとは? 〜 #AskTensorFlow より〜TensorFlow 2+Keras(tf.keras)入門

「スタンドアロンKerasとtf.kerasは何が違うのか?」「tf.kerasが、将来的にTensorFlowから削除される可能性はあるのか?」など、TensorFlow 2.0時代のKerasに関する一般的な疑問と、それへのTensorFlowチームメンバーからの回答をまとめる。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「TensorFlow 2+Keras(tf.keras)入門」のインデックス

連載目次

 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氏(右)
図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日時点ではまだベータ版)に統合されました。

図2 TensorFlow 2.0に同梱されているKerasである「tf.keras」のドキュメント
図2 TensorFlow 2.0に同梱されているKerasである「tf.keras」のドキュメント

 しかし、スタンドアロンKerasは確実に今後も存続します(図3)。

図3 スタンドアロンKerasのドキュメント
図3 スタンドアロンKerasのドキュメント

 tf.kerasではTensorFlow用の最適化が多く施されていますが、それらの機能はまだスタンドアロンKerasには導入されていません。Kerasの発展について、質問や意見、懸念などがある場合は、ぜひKerasユーザー向けSIG(Special Interest Group:興味を持つ人のための特別グループ)(図4)にご参加の上、お知らせください。

図4 Kerasユーザー向けSIG
図4 Kerasユーザー向けSIG

スタンドアロンKerasの全機能は、tf.kerasにも含まれていますか?

 シンプルな回答は「いいえ」になります。

 スタンドアロンKerasは、例えばTheanoバックエンドやCNTKバックエンドなど、tf.kerasが持っていない機能をたくさん持っています。しかし、全ての便利な機能(例えばオプティマイザー、メトリクス、損失関数、レイヤー、モデル構築APIといった、Kerasを使ってモデルを訓練しデプロイするための機能)は、tf.kerasにも含まれていますのでご安心ください。

 もちろん、スタンドアロンKerasとtf.kerasの構文は、全く同じではない(例えば図5)にしても非常に似ています。なので、スタンドアロンKerasに精通しているのであれば、tf.kerasもそのまま使いこなせます。

図5 tf.kerasとスタンドアロンKerasでは例えばモジュール名(階層名)が違う
図5 tf.kerasとスタンドアロンKerasでは例えばモジュール名(階層名)が違う

TensorFlow 2.0は、スタンドアロンKerasにどんな変化をもたらすのでしょうか?

Copyright© Digital Advantage Corp. All Rights Reserved.

[an error occurred while processing this directive]
ページトップに戻る