LoginSignup
4
5

More than 5 years have passed since last update.

Cognitive Took Kit(CNTK)をKerasのバックエンドで使用する

Posted at

CNTKバージョン2.1

CNTKもバージョンが2.1となりました。2.1に関して機能強化のうち特徴的なのは強化学習のフレームワークとしてdeeprlが提供されています。以下のリンクでリファレンスがあります。一部ですが、Deep Q-Learning以外にもいくつかのロジックが実装されているようです。
cntk.contrib.deeprl.agent.agent module
cntk.contrib.deeprl.agent.agent_factory module
cntk.contrib.deeprl.agent.policy_gradient module
cntk.contrib.deeprl.agent.qlearning module
cntk.contrib.deeprl.agent.random_agent module
cntk.contrib.deeprl.agent.tabular_qlearning module
また、2.0からサポートされていますが、Kerasのバックエンドとして使用できるようになったことで用途が広がっている状況です。

Kerasの例

Kerasの例として【Using Keras and Deep Q-Network to Play FlappyBird】を紹介したいと思います。もともとKerasで作成された、強化学習のサンプルですが、CNTKに移植されています。cntk/Examples/ReinforcementLearning/FlappingBirdWithKerasにコードが公開されています。サンプルを動かしてみます。CNTKのインストールセットアップはRCの時代と変わらないため、こちらの記事を参照ください。

kerasはcntkをactivateしたコマンドラインで下記でインストールできます(最新版にアップグレードしておいた方がよいですので、すでにインストールされている場合は、-Uオプションを付けた方がよいでしょう)

pip install keras

さらに設定ファイル~/.keras/keras.jsonを作成します。Windowsの場合はC:\Users<ユーザ名>.keras.jsonになります。ファイルの内容は以下です。

{
"epsilon": 1e-07,
"image_data_format": "channels_last",
"backend": "cntk",
"floatx": "float32"
}

上記で、kerasの動作が可能になります。下記で動作確認可能です。

・GPU動作の場合(GPUがないと恐ろしく時間がかかります)
https://github.com/fchollet/keras/blob/master/examples/mnist_cnn.py

・GPUが入っていない場合
https://github.com/fchollet/keras/blob/master/examples/mnist_mlp.py
がよいと思います。
次に、FlappingBirdの依存関係をインストールします

pip install pygame
conda install scikit-learn
conda install scikit-image

この状態で、WindowsでもLinuxでも動作可能です。また、GPUで動作しますので、高速な動作も期待できます。

Ubuntu 16.04 LTSで実行

screenshot-from-2017-08-03-14-52-55[1].png

screenshot-from-2017-08-03-14-52-03[1].png

screenshot-from-2017-08-03-14-52-30[1].png

CNTKも2.1になり色々な部分が強化されています。これからの強化学習分野の進化がかなり期待されます。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5