このページは https://keras.io/ja/ からの抜粋です。
Kerasとは#
Kerasは,Pythonで書かれた,TensorFlowまたはCNTK,Theano上で実行可能な高水準のニューラルネットワークライブラリです. Kerasは,迅速な実験を可能にすることに重点を置いて開発されました. アイデアから結果に到達するまでのリードタイムをできるだけ小さくすることが,良い研究をするための鍵になります.
次のような場合で深層学習ライブラリが必要なら,Kerasを使用してください:
- 容易に素早くプロトタイプの作成が可能(ユーザーフレンドリー,モジュール性,および拡張性による)
- CNNとRNNの両方,およびこれらの2つの組み合わせをサポート
- CPUとGPU上でシームレスな動作
Keras.ioのドキュメントを読んでください.
KerasはPython 2.7-3.6に対応しています.
ガイドライン#
- ユーザーフレンドリー: Kerasは機械向けでなく,人間向けに設計されたライブラリです.ユーザーエクスペリエンスを前面と中心においています.Kerasは,認知負荷を軽減するためのベストプラクティスをフォローします.一貫したシンプルなAPI群を提供し,一般的な使用事例で要求されるユーザーアクションを最小限に抑え,ユーザーエラー時に明確で実用的なフィードバックを提供します.
- モジュール性: モデルとは,できるだけ制約の少ない接続が可能で,独立した,完全に設定可能なモジュールの,シーケンスまたはグラフとして理解されています. 特に,ニューラルネットワークの層,損失関数,最適化,初期化,活性化関数,正規化はすべて,新しいモデルを作成するための組み合わせ可能な,独立したモジュールです.
- 拡張性: 新しいモジュールが(新しいクラスや関数として)簡単に追加できます.また,既存のモジュールには多くの実装例があります.新しいモジュールを容易に作成できるため,あらゆる表現が可能になっています.このことからKerasは先進的な研究に適しています.
- Pythonで実装: 宣言形式の設定ファイルを持ったモデルはありません.モデルはPythonコードで記述されています.このPythonコードは,コンパクトで,デバッグが容易で,簡単に拡張できます.
30秒でKerasに入門しましょう.#
Kerasの中心的なデータ構造は__model__で,レイヤーを構成する方法です.
主なモデルはSequential
モデルで,レイヤーの線形スタックです.
更に複雑なアーキテクチャの場合は,Keras functional APIを使用する必要があります.これでレイヤーのなす任意のグラフが構築可能になります.
Sequential
モデルの一例を見てみましょう.
from keras.models import Sequential model = Sequential()
.add()
で簡単にレイヤーを積み重ねることができます:
from keras.layers import Dense model.add(Dense(units=64, activation='relu', input_dim=100)) model.add(Dense(units=10, 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)
1行でモデルの評価ができます.
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)
また,新しいデータに対して予測もできます:
classes = model.predict(x_test, batch_size=128)
質問応答システムや画像分類,ニューラルチューリングマシン,word2vecやその他多くのモデルは高速かつシンプルに実装可能です.深層学習の根底にあるアイデアはとてもシンプルです.実装もシンプルであるべきではないでしょうか?
Kerasについてのより詳細なチュートリアルについては,以下を参照してください.
リポジトリのexamples folderにはさらに高度なモデルがあります. メモリネットワークを用いた質問応答システムや積層LSTMを用いた文章生成などです.