G検定を合格して理論的な部分を知りましたが実際に動かしてはいないので、試してみようと思います。AI関連のプロジェクトをしている知り合いに聞いた感じKerasが良さそうだったので、これを使ってみます。
Kerasとは
G検定の勉強に使った書籍の記載によると、Kerasとは「ディープラーニングに特化したTensorFlowのラッパー」とのことです。
ただ、Kerasのドキュメント的にはTensorFlowがデフォルトではある様ですが、CNTKやTheanoへの変更ができる様で、TensorFlowには限定されてはいない様です。
サンプルプログラム
以下のソースコードを参考に実行してみたいと思います。
https://github.com/keras-team/keras/blob/master/examples/mnist_mlp.py
上記はmnistというテスト用のデータセットを用いたサンプルプログラムです。
mnist自体はまた改めて見て行きたいと思います。
インストール
TensorFlowインストール
Pythonの環境構築やTensorFlowのインストールについては以下に記載しました。
Kerasインストール
仮想環境の有効化
まずは仮想環境を有効化しておきます。これは実施済みなら不要です。
root@9f24b514cb06:/# source ./venv/bin/activate
(venv) root@9f24b514cb06:/#
kerasインストール
kerasのインストールは以下の様にpipで実行できます。
pip3 install keras
以下は実行例です。
(venv) root@9f24b514cb06:/# pip3 install keras
Collecting keras
Downloading Keras-2.3.1-py2.py3-none-any.whl (377 kB)
|████████████████████████████████| 377 kB 732 kB/s
Requirement already satisfied: numpy>=1.9.1 in /venv/lib/python3.8/site-packages (from keras) (1.18.3)
Collecting keras-applications>=1.0.6
Downloading Keras_Applications-1.0.8-py3-none-any.whl (50 kB)
|████████████████████████████████| 50 kB 1.2 MB/s
Requirement already satisfied: h5py in /venv/lib/python3.8/site-packages (from keras) (2.10.0)
Requirement already satisfied: keras-preprocessing>=1.0.5 in /venv/lib/python3.8/site-packages (from keras) (1.1.0)
Requirement already satisfied: six>=1.9.0 in /usr/local/lib/python3.8/dist-packages (from keras) (1.14.0)
Requirement already satisfied: scipy>=0.14 in /venv/lib/python3.8/site-packages (from keras) (1.4.1)
Collecting pyyaml
Downloading PyYAML-5.3.1.tar.gz (269 kB)
|████████████████████████████████| 269 kB 2.0 MB/s
Building wheels for collected packages: pyyaml
Building wheel for pyyaml (setup.py) ... done
Created wheel for pyyaml: filename=PyYAML-5.3.1-cp38-cp38-linux_x86_64.whl size=44617 sha256=4cb733ff6fba62ad832495c72f95df22e71bc2395c62d1a89c36296e4eca3f36
Stored in directory: /root/.cache/pip/wheels/13/90/db/290ab3a34f2ef0b5a0f89235dc2d40fea83e77de84ed2dc05c
Successfully built pyyaml
Installing collected packages: keras-applications, pyyaml, keras
Successfully installed keras-2.3.1 keras-applications-1.0.8 pyyaml-5.3.1
(venv) root@9f24b514cb06:/#
インストール実行後に状態を確認すると以下の様にKerasがリストに含まれていることが確認できます。
(venv) root@9f24b514cb06:/# pip list | grep -i keras
Keras 2.3.1
Keras-Applications 1.0.8
Keras-Preprocessing 1.1.0
(venv) root@9f24b514cb06:/#
サンプル実行
サンプルプログラムを実行してみると以下の様になりました。
(venv) root@9e09a23229ed:/home/keras# python mnist_mlp.py
Using TensorFlow backend.
60000 train samples
10000 test samples
2020-05-13 13:34:30.563194: I tensorflow/core/platform/cpu_feature_guard.cc:143] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2020-05-13 13:34:30.576703: I tensorflow/core/platform/profile_utils/cpu_utils.cc:102] CPU Frequency: 1200000000 Hz
2020-05-13 13:34:30.577274: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x37c81f0 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-05-13 13:34:30.577353: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 512) 401920
_________________________________________________________________
dropout_1 (Dropout) (None, 512) 0
_________________________________________________________________
dense_2 (Dense) (None, 512) 262656
_________________________________________________________________
dropout_2 (Dropout) (None, 512) 0
_________________________________________________________________
dense_3 (Dense) (None, 10) 5130
=================================================================
Total params: 669,706
Trainable params: 669,706
Non-trainable params: 0
_________________________________________________________________
Train on 60000 samples, validate on 10000 samples
Epoch 1/20
60000/60000 [==============================] - 8s 137us/step - loss: 0.2465 - accuracy: 0.9243 - val_loss: 0.1059 - val_accuracy: 0.9666
Epoch 2/20
60000/60000 [==============================] - 9s 148us/step - loss: 0.1016 - accuracy: 0.9682 - val_loss: 0.0903 - val_accuracy: 0.9720
Epoch 3/20
60000/60000 [==============================] - 13s 213us/step - loss: 0.0740 - accuracy: 0.9784 - val_loss: 0.0780 - val_accuracy: 0.9776
Epoch 4/20
60000/60000 [==============================] - 11s 181us/step - loss: 0.0613 - accuracy: 0.9816 - val_loss: 0.0831 - val_accuracy: 0.9769
Epoch 5/20
60000/60000 [==============================] - 10s 167us/step - loss: 0.0503 - accuracy: 0.9851 - val_loss: 0.0716 - val_accuracy: 0.9818
Epoch 6/20
60000/60000 [==============================] - 13s 215us/step - loss: 0.0425 - accuracy: 0.9871 - val_loss: 0.0757 - val_accuracy: 0.9813
Epoch 7/20
60000/60000 [==============================] - 10s 162us/step - loss: 0.0365 - accuracy: 0.9890 - val_loss: 0.0780 - val_accuracy: 0.9836
Epoch 8/20
60000/60000 [==============================] - 9s 150us/step - loss: 0.0350 - accuracy: 0.9895 - val_loss: 0.0918 - val_accuracy: 0.9815
Epoch 9/20
60000/60000 [==============================] - 9s 158us/step - loss: 0.0320 - accuracy: 0.9907 - val_loss: 0.0902 - val_accuracy: 0.9819
Epoch 10/20
60000/60000 [==============================] - 9s 151us/step - loss: 0.0300 - accuracy: 0.9919 - val_loss: 0.0936 - val_accuracy: 0.9840
Epoch 11/20
60000/60000 [==============================] - 8s 128us/step - loss: 0.0259 - accuracy: 0.9923 - val_loss: 0.0909 - val_accuracy: 0.9839
Epoch 12/20
60000/60000 [==============================] - 8s 131us/step - loss: 0.0252 - accuracy: 0.9925 - val_loss: 0.1131 - val_accuracy: 0.9815
Epoch 13/20
60000/60000 [==============================] - 8s 128us/step - loss: 0.0235 - accuracy: 0.9935 - val_loss: 0.0985 - val_accuracy: 0.9845
Epoch 14/20
60000/60000 [==============================] - 7s 124us/step - loss: 0.0236 - accuracy: 0.9941 - val_loss: 0.1030 - val_accuracy: 0.9836
Epoch 15/20
60000/60000 [==============================] - 7s 124us/step - loss: 0.0216 - accuracy: 0.9943 - val_loss: 0.1037 - val_accuracy: 0.9842
Epoch 16/20
60000/60000 [==============================] - 8s 128us/step - loss: 0.0215 - accuracy: 0.9941 - val_loss: 0.1153 - val_accuracy: 0.9834
Epoch 17/20
60000/60000 [==============================] - 8s 125us/step - loss: 0.0195 - accuracy: 0.9946 - val_loss: 0.1188 - val_accuracy: 0.9839
Epoch 18/20
60000/60000 [==============================] - 8s 126us/step - loss: 0.0188 - accuracy: 0.9951 - val_loss: 0.1221 - val_accuracy: 0.9850
Epoch 19/20
60000/60000 [==============================] - 8s 126us/step - loss: 0.0186 - accuracy: 0.9953 - val_loss: 0.1140 - val_accuracy: 0.9846
Epoch 20/20
60000/60000 [==============================] - 7s 125us/step - loss: 0.0173 - accuracy: 0.9952 - val_loss: 0.1226 - val_accuracy: 0.9847
Test loss: 0.12264773914343109
Test accuracy: 0.9847000241279602
(venv) root@9e09a23229ed:/home/keras#
簡単ですがKerasのインストールと実行は以上です。
コメント