本記事は、Kerasのドキュメンテーションのトップページを翻訳(適宜意訳)したものです。誤り等あればご指摘いただけたら幸いです。
Kerasとは
Kerasは、Pythonで書かれた、TensorFlow、CNTK、Theanoの上で実行可能な高水準のニューラルネットワークライブラリです。これは、迅速な実験を可能にすることに重点を置いて開発されました。アイデアから結果へできる限り早く到達することができることは、良い研究をする上で重要です。
次のような深層学習ライブラリを必要とするならば、是非Kerasを使ってみてください。
- 簡単で素早いプロトタイプを作成可能(ユーザーフレンドリー、モジュール性、拡張性)
- 畳み込みネットワークと再帰ネットワークの両方、およびこれら2つの組み合わせをサポート
- CPUとGPU上でシームレスに実行可能
詳細はKeras.ioのドキュメントを参照してください。
KerasはPython 2.7-3.5と互換性があります。
ガイダンスの原則
ユーザーフレンドリー
Kerasは、人間ではなく機械向けに設計されたAPIです。ユーザーエクスペリエンスをフロントとセンターに置きます。Kerasは、負荷を軽減するためのベストプラクティスに従っています。一貫性のあるシンプルなAPIを提供し、一般的な利用事例に必要なアクションの数を最小限に抑え、エラー時に明確で実用的なフィードバックを提供します。
モジュール性
モデルとは、できるだけ制限をかけずにプラグインできる、完全に構成可能なスタンドアロンのモジュールのシーケンス(またはグラフ)として理解されます。特に、ニューラル層、コスト関数、オプティマイザ、初期化スキーム、活性化関数、正規化スキームはすべて、新しいモデルを作成するために結合できるスタンドアロン・モジュールです。
容易な拡張性
新しいモジュールは(新しいクラスや関数として)簡単に追加することができます。また、既存のモジュールは十分な例を提供します。新しいモジュールを簡単に作成できるので、表現力を最大限に発揮させ、高度な研究に適しています。
Pythonで作業する
宣言形式の別個のモデル構成ファイルはありません。モデルはPythonコードで記述されており、コンパクトでデバッグや拡張を容易にします。
30秒でKerasを始めよう!
Kerasのコアとなるデータ構造はモデルであり、層(レイヤー)をまとめる方法です。最も単純なモデルのタイプは、一連のレイヤーであるSequentialモデルです。もっと複雑なアーキテクチャの場合は、Keras functional APIを使用する必要があります。これにより、レイヤの任意のグラフを作成することができます。
これは Sequential
モデルです。
from keras.models import Sequential model = Sequential()
層を重ねるのは .add() のように簡単です。
from keras.layers import Dense, Activation model.add(Dense(units=64, input_dim=100)) model.add(Activation('relu')) model.add(Dense(units=10)) model.add(Activation('softmax'))
モデルが良さそうならば、.compile()
を使用して学習プロセスを設定します。
model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
必要に応じて、オプティマイザをさらに構成することができます。Kerasの核となる原則は、ものごとを合理的にシンプルにすることですが、ユーザーが必要なときに完全にコントロールできるようにすることが可能です。(究極の制御はソースコードの容易な拡張性です)
model.compile(loss=keras.losses.categorical_crossentropy, optimizer=keras.optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True))
トレーニングデータをバッチで繰り返し処理可能です。
# x_train and y_train are Numpy arrays --just like in the Scikit-Learn API. model.fit(x_train, y_train, epochs=5, batch_size=32)
また、モデルに手動でバッチを提することもできます。
model.train_on_batch(x_batch, y_batch)
一行でパフォーマンスを評価します。
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)
または、新しいデータに対して予測を生成します。
classes = model.predict(x_test, batch_size=128)
質問応答システム、画像分類モデル、神経チューリングマシン、またはその他のモデルを構築するのは高速です。深層学習の背後にあるアイデアは単純です。実装に苦労するはずはありません。
Kerasに関する詳細なチュートリアルについては、次を参照してください。
リポジトリのexamplesフォルダには、より高度なモデルがありますので参考にしてみてください。(メモリネットワークでの質問応答、スタックされたLSTMによるテキスト生成など)