Kerasの概要
Keras(ケラス)は、TensorFlowの上で実行可能な高水準のニューラルネットワークライブラリです。迅速な実験を可能にすることに重点を置いて開発されたため、簡単なPythonのコードで多くのモデルを素早く実装できます。ディープラーニングの初心者が実装を始めるには最も適したライブラリと言えます。
例えば、次のような4つの特徴を持つアヤメのデータを学習して、
- がくの長さ
- がくの幅
- 花弁の長さ
- 花弁の幅
3種類(versicolor、virginica、setosa)に分類するモデルを作成したい場合、
次のようにニューラルネットワークのモデルで実現できますが、
以下のようなコードを実装するだけでこれを実現できます(※)。
# 必要なライブラリのインポート
import tensorflow as tf
import keras
from sklearn import datasets, preprocessing
from sklearn.model_selection import train_test_split
from keras.layers.core import Dense, Activation
from keras.models import Sequential
from keras.utils import np_utils
# アヤメのデータの読み込み(scikit-learnに含まれているサンプル)
iris = datasets.load_iris()
x = iris.data
y = iris.target
# データの前処理
x = preprocessing.scale(x)
y = np_utils.to_categorical(y)
# 学習データとテストデータに分割
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=0)
# モデルの作成
model = Sequential()
model.add(Dense(input_dim=4, units=3, activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy',
metrics=['accuracy'])
# 学習
model.fit(x_train, y_train, epochs=50, batch_size=1, verbose=1)
# 評価
loss, accuracy = model.evaluate(x_test, y_test, verbose=0)
print ('Accuracy', '{:.2f}'.format(accuracy))
※scikit-learnとTensorFlowも使用しています。
このように分かりやすいコードで実現できるのがKerasの特徴の1つです。この単純なモデルでの正確度は92%になりますが、モデルを改良することでさらに正確度が向上します。そして、未知のデータに対してはmodel.predict_classes()でどの種類か予測することができます。
もともと、KerasはTensorFlowの他にTheanoやCNTKなどの複数のフレームワークからバックエンドを選択できるライブラリでした。しかし、2020年6月にリリースされたバージョン2.4.0で、TensorFlow のみをバックエンドとするライブラリとなりました。TensorFlow 2.0以降では、TensorFlowのインストールと同時にKerasもインストールされることになります。
Kerasの機能および特徴
Kerasの公式サイトでは「Why choose Keras?」として、以下を挙げています。
- 簡単かつ柔軟
一貫性のあるシンプルなAPIや提供しており、明確なエラーメッセージを返すため、学習が容易です。またTensorFlowの機能と統合されているため、機能の一部を柔軟にカスタマイズできます。
このようにKerasはとても使い勝手が良いOSSです。そのため、2019年の初めに行われた調査にて、過去2年間のKaggleコンテストの上位5社(N = 120)が使用しているディープラーニングのフレームワークの1位にもランクインしました。
- 利用実績
2020年の初めの時点で、375000人を超える個人ユーザーがおり、TensorFlowとともに、他の深層学習フレームワークよりも事業と研究コミュニティの両方で多く採用されています。Netflix、Uber、Yelp、Instacart、Zocdoc、Squareなど多くの企業がKerasを使用しています。また、CERNやNASAなどの大規模な科学機関の研究者にも採用されています。
- 簡単にモデルを製品化
Kerasのモデルは、他のどの深層学習APIよりも幅広いプラットフォームに簡単にデプロイできます。
- サーバー上のPythonランタイムまたはNode.jsランタイム
- サーバー上でTFX / TF配信
- TF.js経由のブラウザー
- TF LiteやAppleのCoreMLを介したAndroidまたはiOS
- Raspberry Pi、Edge TPU、または別の組み込みシステム
- マルチGPU、分散学習のサポート
Kerasはスケーラブルです。TensorFlow DistributionStrategy APIを使用すると、大規模なGPUクラスタ(最大数千のデバイス)またはTPUポッド全体でモデルを簡単に実行でき、1EFLOPS以上の計算能力を実現します。
また、最新のNVIDIA GPUとTPUの混合精度学習をネイティブでサポートしており、学習と推論で最大2倍のスピードアップを提供できます。 - 機械学習ワークフローのすべてのステップをカバー
Kerasは、関連する多くのプロダクトとともに構成されるエコシステムの中心にあります。これにより、機械学習ワークフローのすべてのステップをカバーすることができます。- AutoKerasによる高速なモデルプロトタイピング
- TF Cloudを介したGCPでのスケーラブルなモデルの学習
- Keras Tunerによるハイパーパラメーターの調整
- TensorFlowアドオンでの追加のレイヤー、損失、メトリック、コールバック...
- TF Model Optimization Toolkitを使用した推論モデルの量子化とプルーニング
- TF Liteでのモバイルや組み込み機器上でのモデルのデプロイ
- TF.jsによるブラウザーでのモデルのデプロイ
等々


Kerasのライセンス
Kerasのライセンスは、バージョン2.4まではMITライセンスです。
バージョン2.6 からはApache License2.0になっています。
MITライセンスは、X Window System (X11)などのソフトウェアに適用されていることから、X11ライセンス、またはXライセンスとも表記されます。MITライセンスは、数あるソフトウェアライセンスの中で最も制約が少なく、ソースコードの無償の使用のほか、改変、再配布することも認められています。Apache Licenseのコードが使用されていることの明記を条件に、ソースコードの自由な改変と公開が認められています。
Kerasのライセンスについてご不明な点がありましたら、お気軽にお問い合わせください。
Kerasと同類のソフトウェア
OSSの機械学習のフレームワークは他にも多数ありますが、Kerasのように他のフレームワーク(TensorFlow)をバックエンドにする高レベルのライブラリで有名なものはそれほど多くありません。その分野ではデファクトスタンダードなOSSと言えます。
関連OSS
- TensorFlow
- Pytorch
- MXNet
- CNTK
- Deeplearning4j
Kerasのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。