2017年2月1日水曜日

Keras: TensorFlowとTheanoのための深層学習ライブラリ

Kerasは、Pythonで書かれた、TensorFlowまたはTheano上で実行可能な高水準のニューラルネットワークライブラリです。 Kerasは、迅速な実験を可能にすることに重点を置いて開発されました。 可能な限り遅れなくアイデアから結果に進められることは、良い研究をする上で重要です。

次のような深層学習ライブラリが必要な場合は、Kerasを使用します:

·         簡単で早くプロトタイプ作成が可能 (全体的なモジュール性、ミニマリズム、および拡張性による)

·         CNNRNNの両方、およびこれらの2つの組み合わせをサポート

·         任意の接続方式 (複数入力および複数出力の学習を含む) をサポート

·         CPUGPUでシームレスな実行

Keras.ioのドキュメントを読んでください。

KerasPython 2.7-3.5と互換性があります。


ガイドライン

·         モジュール性: モデルとは、できるだけ制約を少なく接続可能で、完全構成可能な独立したモジュールのシーケンスまたはグラフとして理解されています。 特に、ニューラルネットワークの層、損失関数、最適化、初期化、活性化関数、正規化はすべて新しいモデルを作成するために組み合わせられる独立したモジュールです。

·         ミニマリズム: それぞれのモジュールが短く、簡潔に構成されています。それぞれのコードが分かりやすく、ブラックボックス化されている部分がありません。これによって作業スピードが上がり、革新的な事をしやすくなるでしょう。

·         拡張性: 新しいモジュールを追加するのがとても簡単です(新しいクラスや関数として)。また、それぞれのモジュールには多くの実装例があります。新しいモジュールを簡潔に作成できるのであらゆる事を表現することが可能になっています。これによってKerasは先進的な研究に適しています。

·         Pythonで実装: 宣言形式の別個のモデル設定ファイルはありません。モデルはPythonコードで記述されます、これは、コンパクトでデバッグと拡張が容易です。


30秒でkerasに入門しましょう。

Kerasの中心的なデータ構造はmodelで、層を構成する方法です。 主なモデルはSequentialモデル(Sequential)で、層の線形スタックです。 更に複雑なアーキテクチャの場合は、Keras functional APIを使用する必要があります。

Sequential モデルの一例を見てみましょう。

from keras.models import Sequential
 
model = Sequential()

.add()で簡単に層を積めます:

from keras.layers import Dense, Activation
 
model.add(Dense(output_dim=64, input_dim=100))
model.add(Activation("relu"))
model.add(Dense(output_dim=10))
model.add(Activation("softmax"))

実装したモデルがよさそうなら.compile()で学習プロセスを設定しましょう。

model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])

必要に応じて、最適化アルゴリズムも設定できます。Kerasの中心的な設計思想は、ユーザーが必要なときに完全にコントロールできるようにしながら (ソースコードの容易な拡張性を実現する究極のコントロール) 、適度に単純にすることです。

from keras.optimizers import SGD
model.compile(loss='categorical_crossentropy', optimizer=SGD(lr=0.01, momentum=0.9, nesterov=True))

学習データをミニバッチで繰り返し処理できます。

model.fit(X_train, Y_train, nb_epoch=5, batch_size=32)

代わりに、バッチサイズを別に規定できます。

model.train_on_batch(X_batch, Y_batch)

また、1行でモデルの評価。

loss_and_metrics = model.evaluate(X_test, Y_test, batch_size=32)

また、新しいデータに対して予測:

classes = model.predict_classes(X_test, batch_size=32)
proba = model.predict_proba(X_test, batch_size=32)

質問応答システムや画像分類、ニューラルチューリングマシン、word2vecやその他多くのモデルは高速かつシンプルに実装可能です。深層学習の根底にあるアイデアはとてもシンプルです。実装もシンプルであるべきではないでしょうか?

Kerasについてのより詳細なチュートリアルについては、以下を参照してください。

·         Getting started with the Sequential model

·         Getting started with the functional API

レポジトリのexamples folderにはさらに高度なモデルがあります。 メモリーネットワークを用いた質問応答システムや積層LSTMを用いた文章生成などです。


インストール

Kerasは以下のライブラリに依存関係があります。

·         numpy, scipy

·         pyyaml

·         HDF5 h5py (モデルの保存や読み込み関数を使う場合のみ)

·         cuDNN: オプションですが、CNNを使用する場合は推奨

Tensorflowをバックエンドで使用する場合:

·         TensorFlow

o    See installation instructions.

Theanoをバックエンドで使用する場合:

·         Theano

o    See installation instructions.

Kerasをインストールするには、まず、ターミナル上でcdコマンドでkerasのフォルダに移動してから以下のインストールコマンドを実行してください。

sudo python setup.py install

PyPIからもインストールできます。

sudo pip install keras

TensorFlowからTheanoへの変更

デフォルトでは、KerasTensorFlowをテンソル計算ライブラリとしています。Kerasバックエンドを設定するには、この手順に従ってください。


サポート

質問と開発に関するディスカッションに参加できます:

·         Keras Google group

·         Keras Gitter channel

Githubの問題にバグレポートや機能リクエストを投稿できます。 まずガイドラインを必ず読んでください。

 

0 件のコメント:

コメントを投稿