マルチバックエンドKerasの終焉、tf.kerasに一本化TensorFlow 2+Keras(tf.keras)入門

Kerasの公式サイト「keras.io」が完全リニューアル。Kerasのインストール方法やkerasモジュールのインポート方法に関する説明が変わった。「tf.kerasに一本化」とはどういうことなのかを解説する。

» 2020年05月13日 05時00分 公開
[一色政彦デジタルアドバンテージ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「TensorFlow 2+Keras(tf.keras)入門」のインデックス

連載目次

 もともとのKerasは、TensorFlow/Theano/CNTKといった複数のフレームワークからバックエンドを選択できるディープラーニングのライブラリ(以下、マルチバックエンドKeras)だった。それがついにタイトルの通り、tf.kerasに一本化された。「これはどういうことなのか」について、各公式サイトやツイートの情報を読み取りながら紹介する。

Keras公式サイトがtf.kerasを使っている!?

 2020年5月9日: Kerasの作者であるFrançois Chollet(フランソワ・ショレ)氏(以下、F.Chollet氏)は、Twitter上で次のツイートを行った。

図1 keras.ioサイトのリニューアル発表(Twitter: @fchollet) 図1 keras.ioサイトのリニューアル発表(Twitter: @fchollet)

 開発者ガイドやサンプルも含めて100%リニューアルして、

が生まれ変わったことを発表したのだ。

 一体どこが変わったのだろうか。[Getting started]ページを開くと、図2のようになっており、インストールの説明がないことに気付く。

図2 keras.ioサイトの[Getting started]ページ 図2 keras.ioサイトの[Getting started]ページ

 keras.ioサイト内でインストール方法を探していくと、図3の記述が見つかった

図3 keras.ioサイト上でのKerasのインストール方法の記述 図3 keras.ioサイト上でのKerasのインストール方法の記述

 「Kerasはtensorflow.kerasとして、TensorFlow 2.0と一緒に入ります。Kerasを始めるには、シンプルにTensorFlow 2.0をインストールしてください」と書かれている。つまり、Keras公式サイトのレベルでマルチバックエンドKerasは終わったということである。

 もちろん、過去にマルチバックエンドKerasで作られたものは、そのバージョンを使い続ければ問題なく動かせるだろう。しかし今後、新たにKeras最新版を使いたい場合は(というかTensorFlow 2.0以降を使う場合)、TensorFlowモジュール内のKerasモジュール(import tensorflow as tf; tf.keras)APIを使う必要があるということだ。

 実際、keras.ioのすべてのサンプルが図4のようにtf.kerasを使っている。

図4 keras.ioサイトのtf.kerasのインポートコード 図4 keras.ioサイトのtf.kerasのインポートコード

 ちなみに、keras.ioではimport tensorflow as tf; from tensorflow import kerasというコードで、tf.kerasという呼び出しではなく、kerasモジュールをインポートする形で使用している。これは書き方の好みの問題だが、これまでKerasを使ってきた人には、この書き方がお勧め、ということだと思う。

 「えっと、ところでKerasとtf.kerasって何が違うの?」という疑問を持つ人もいるだろう。図1のTwitterスレッドにおいて作者のF.Chollet氏は図5のように答えている。

図5 “Keras is tf.keras”(Twitter: @fchollet) 図5 “Keras is tf.keras”(Twitter: @fchollet)

 「Keras=tf.keras」である。今後、Kerasと言えば「tf.keras」を指すことになるのだ。つまり「Keras≒TensorFlow」と言ってもよいだろう。TensorFlow 2.0以降では、tf.kerasを一切使わずにTensorFlowの低水準APIのみで実装するのは非常にレアケースであるからだ(こちらの記事で説明されているフルカスタマイズする場合も、tf.kerasのクラスをサブクラス化するため)。

 筆者の感想を簡単に述べておくと、長らくKerasを使ってきたユーザーにとっては今回の話は悲報ではあると思う。Chainerの話もそうであったが、ときに変化は厳しい結果を伴う。やはり流れには逆らわずに、変化に適応していくしかないだろう。もちろんtf.kerasが嫌だからPyTorchというのもありだろう。しかしPyTorchにも問題がないわけではない。PyTorchにもやはりKeras的な手軽なAPIが欲しいと、PyTorch Lightningといった軽量の簡易化ラッパーがはやってきていたりする。そういった点を考えると、tf.kerasはKeras機能そのものであり優位性があると思う。また、TensorFlowでもさまざまな書き方(初中級者向けエキスパート向けフルカスタマイズ)が可能なので、「研究者向けの高度な実装ならPyTorch」とも言えない状況にもなってきている。いずれのライブラリにも一長一短があり、雌雄を決する段階ではまだない(恐らく今後も各ライブラリの均質化は進んでいき、差はなくなる方向だ)と思う。

 さて、ディープラーニングフレームワークの変化は本当に速い。半年もたてば状況が大きく変わってしまう。Kerasも例外ではなく、ここ数年で、状況が刻々と変わってきた。本稿の後半ではその大きな流れを簡単に振り返って終わりとしよう。

Kerasの歴史

 2015年3月28日: Kerasの開発が開始された日である。図6は、GitHub上のKerasプロジェクトの最初のコミットをキャプチャーしたものである。これを見ても分かるように、まだ約5年しかたっていない。

図6 Kerasが開発され始めた日 図6 Kerasが開発され始めた日

 その後、マルチバックエンドKerasとして人気を獲得していき、特に初心者や簡易的な利用でユーザー数を伸ばしながら発展していった。ちなみに作者のF.Chollet氏は2015年8月にグーグルに入社している。

 2017年11月3日: この日、Kerasは大きな転換期を迎える。TensorFlow(バージョン1.4.0〜)に同梱されることになった(図7)。tf.kerasの誕生である。ちなみにこの時点でのKerasのバージョンはKeras 2.0.9だった。

図7 tf.kerasの誕生 図7 tf.kerasの誕生

 2019年3月6日: (Kerasではなく)TensorFlowの方はさまざまな高水準APIが乱立しては消えていっていた。この問題に対して、TensorFlow 2.0(この時点ではα版)では「tf.kerasがTensorFlow標準の高水準APIとして唯一生き残ること」が「TensorFlow Dev Summit 2019」で正式に発表されたなお、Estimators=tf.estimatorも互換性のために残っている)。

 ちなみに、もともとの単体で提供しているKeras(スタンドアロンKeras=マルチバックエンドKeras)と、TensorFlowに同梱されているtf.kerasの違いが分かりづらくなってきていたので、本サイトでは2019年7月に「スタンドアロンKerasとtf.kerasの違いとは?」という記事を公開している(図8)。今日現在では、図5で示したように“Keras is tf.keras”なので、少し話が変わってきている。

図8 スタンドアロンKerasとtf.kerasの違い(2019年7月時点) 図8 スタンドアロンKerasとtf.kerasの違い(2019年7月時点)

 2019年9月18日: この日、TensorFlow 2.0をサポートするKeras 2.3.0がリリースされた。GitHub上の説明によると、TensorFlow 2.0におけるtf.keras APIと同期を取る最初のリリースであり、マルチバックエンドKerasの最後のメジャーリリースであることが示された(図9)。

図9 マルチバックエンドKerasの終焉を告げるKeras 2.3.0のリリースノート 図9 マルチバックエンドKerasの終焉を告げるKeras 2.3.0のリリースノート

 つまりこの時点で、「マルチバックエンドKerasは終焉していた」わけである。図8のリリースノートには、「TensorFlow 2.0ではKerasコードからtf.kerasへの切り替えを検討することをお勧めします」と記載されている。

 2019年10月1日: tf.kerasがTensorFlow標準の高水準APIとして採用された「TensorFlow 2.0」が正式リリースされた。ただしこの状況においても、前半で紹介したkeras.ioサイトは古いスタンドアロンKerasのままだった。

 2020年5月9日: いよいよkeras.ioサイトも新しいtf.kerasに完全に置き換わった。

 以上のような経緯で、マルチバックエンドKerasの時代が終わり、tf.kerasに一本化されたわけである。


 今回はkeras.ioの内容を中心に紹介しながら説明した。「tf.keras=Keras」なのだから、今後は、TensorFlowユーザーであってもkeras.ioのサイトを見ながら開発ができるということである。keras.ioとTensorFlowのドキュメントでは、特にAPIリファレンスレベルでは、keras.ioサイトの方が分かりやすいというアドバンテージがあった。この読みやすさは健在なので、tf.kerasユーザーになっても(TensorFlowサイトだけでなく)keras.ioのサイトも参照することをお勧めする。

「TensorFlow 2+Keras(tf.keras)入門」のインデックス

TensorFlow 2+Keras(tf.keras)入門

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。