MacでKerasを使えるようにする
KerasはTheanoやTensorFlowを楽に使うためのライブラリ。
1年前くらいはCaffe使ってたけど、やっぱり使いにくい。
TensorFlowが登場して『Caffe辛かったな〜』って遠い目してた。
Kerasが登場して『TensorFlow辛かったな〜』って遠い目してる。
ここ1年でグッと楽にDeepLearningができるようになってる。
世界の叡智たちスゴいよね…
アルゴリズムの研究はGoogleやらFacebookのような巨人が資本の力(買収、有名AI研究室出身者の青田買い)で進めていくのでしょう。
上級栽培マンの方々は今のアルゴリズムでどう稼ぐか、どう転化するか、ってところを考えていくのでしょう。
で、下級栽培マンの私はアルゴリズムの動かし方を学ぶわけです
環境構築とインストール
環境構築がダルいです。
小生はMacを使ってるので、pyenv+AnacondaでKeras用の環境を作りました。
KerasはデフォルトでTheanoを使っています。
Theanoという名前が気に入らないのでTensorFlowをバックエンドとして使うことします。
手順としては…
- pyenvでAnacondaをインストールする
- AnacondaでKeras+TensorFlow用の環境を作る
- Keras+TensorFlow用の環境で必要なライブラリをインストールする
- KerasでTensorFlowを使うように設定
って感じでしょうか。
pyenv,Anacondaのインストール方法は省略します。
Anacondaのパッケージ管理ツールであるcondaを使えばTensorFlow(2016年8月13日時点:CPU版のみ)をインストールできるようです。
公式サイトによるcondaでのインストール方法を読めば解決ですね。
1 2 3 4 5 |
$ conda create -n keras python=3.5 # pyenvとAnacondaのactivateがバッティングしてターミナルが消滅するのでAnacondaのactivateを明示的に使用するようにしましょう (参考:http://qiita.com/y__sama/items/5b62d31cb7e6ed50f02c#mac%E3%81%AE%E5%A0%B4%E5%90%88) $ source /Users/nihontaro/.pyenv/versions/anaconda3-2.3.0/bin/activate keras (keras) $ conda install -c conda-forge tensorflow (keras) $ pip install keras h5py |
これで必要なモノは用意できました。
次はKerasでTensorFlowを使用するために設定します。
1 |
~/.keras/keras.json |
keras.jsonという設定ファイルを作成したら、下記の内容をコピペすればOK
1 2 3 4 5 6 |
{ "image_dim_ordering": "th", "floatx": "float32", "backend": "tensorflow", "epsilon": 1e-07 } |
動かしてみる
多層パーセプトロンのサンプルを動かしてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
(keras) nihontaro% python mnist_mlp.py Using TensorFlow backend. 60000 train samples 10000 test samples ____________________________________________________________________________________________________ Layer (type) Output Shape Param # Connected to ==================================================================================================== dense_1 (Dense) (None, 512) 401920 dense_input_1[0][0] ____________________________________________________________________________________________________ activation_1 (Activation) (None, 512) 0 dense_1[0][0] ____________________________________________________________________________________________________ dropout_1 (Dropout) (None, 512) 0 activation_1[0][0] ____________________________________________________________________________________________________ dense_2 (Dense) (None, 512) 262656 dropout_1[0][0] ____________________________________________________________________________________________________ activation_2 (Activation) (None, 512) 0 dense_2[0][0] ____________________________________________________________________________________________________ dropout_2 (Dropout) (None, 512) 0 activation_2[0][0] ____________________________________________________________________________________________________ dense_3 (Dense) (None, 10) 5130 dropout_2[0][0] ____________________________________________________________________________________________________ activation_3 (Activation) (None, 10) 0 dense_3[0][0] ==================================================================================================== Total params: 669706 ____________________________________________________________________________________________________ Train on 60000 samples, validate on 10000 samples Epoch 1/20 60000/60000 [==============================] - 12s - loss: 0.2425 - acc: 0.9262 - val_loss: 0.1081 - val_acc: 0.9667 Epoch 2/20 60000/60000 [==============================] - 11s - loss: 0.1030 - acc: 0.9688 - val_loss: 0.0863 - val_acc: 0.9746 Epoch 3/20 60000/60000 [==============================] - 12s - loss: 0.0764 - acc: 0.9767 - val_loss: 0.0896 - val_acc: 0.9741 Epoch 4/20 60000/60000 [==============================] - 12s - loss: 0.0598 - acc: 0.9820 - val_loss: 0.0811 - val_acc: 0.9789 Epoch 5/20 60000/60000 [==============================] - 11s - loss: 0.0503 - acc: 0.9853 - val_loss: 0.0724 - val_acc: 0.9804 Epoch 6/20 60000/60000 [==============================] - 11s - loss: 0.0439 - acc: 0.9871 - val_loss: 0.0807 - val_acc: 0.9815 Epoch 7/20 60000/60000 [==============================] - 12s - loss: 0.0382 - acc: 0.9888 - val_loss: 0.0848 - val_acc: 0.9804 Epoch 8/20 60000/60000 [==============================] - 14s - loss: 0.0341 - acc: 0.9900 - val_loss: 0.0788 - val_acc: 0.9821 Epoch 9/20 60000/60000 [==============================] - 11s - loss: 0.0294 - acc: 0.9909 - val_loss: 0.0819 - val_acc: 0.9823 Epoch 10/20 60000/60000 [==============================] - 12s - loss: 0.0287 - acc: 0.9916 - val_loss: 0.0860 - val_acc: 0.9835 Epoch 11/20 60000/60000 [==============================] - 11s - loss: 0.0268 - acc: 0.9931 - val_loss: 0.1058 - val_acc: 0.9796 Epoch 12/20 60000/60000 [==============================] - 16s - loss: 0.0237 - acc: 0.9933 - val_loss: 0.1050 - val_acc: 0.9822 Epoch 13/20 60000/60000 [==============================] - 17s - loss: 0.0232 - acc: 0.9938 - val_loss: 0.0969 - val_acc: 0.9810 Epoch 14/20 60000/60000 [==============================] - 12s - loss: 0.0252 - acc: 0.9936 - val_loss: 0.1032 - val_acc: 0.9820 Epoch 15/20 60000/60000 [==============================] - 12s - loss: 0.0220 - acc: 0.9941 - val_loss: 0.1016 - val_acc: 0.9826 Epoch 16/20 60000/60000 [==============================] - 12s - loss: 0.0190 - acc: 0.9944 - val_loss: 0.1132 - val_acc: 0.9813 Epoch 17/20 60000/60000 [==============================] - 14s - loss: 0.0193 - acc: 0.9951 - val_loss: 0.1157 - val_acc: 0.9818 Epoch 18/20 60000/60000 [==============================] - 14s - loss: 0.0181 - acc: 0.9954 - val_loss: 0.1223 - val_acc: 0.9822 Epoch 19/20 60000/60000 [==============================] - 13s - loss: 0.0205 - acc: 0.9951 - val_loss: 0.1218 - val_acc: 0.9805 Epoch 20/20 60000/60000 [==============================] - 12s - loss: 0.0178 - acc: 0.9955 - val_loss: 0.1251 - val_acc: 0.9818 Test score: 0.125124387002 Test accuracy: 0.9818 |
それらしい結果が出ました
336px
336px
関連記事
-
-
deepdreamしてみたい
ht …