マルチバックエンド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月にグーグルに入社している。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

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

メールマガジン登録

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