Kerasとは?インストール方法からハイパーパラメータチューニングについて紹介!

- システム
エンジニア - Kerasとはどのようなものですか。
- プロジェクト
マネージャー - Pythonで書かれたディープラーニング(深層学習)ライブラリのことです。インストール方法やハイパーパラメータチューニングについてご紹介しましょう。
Kerasとは?
KerasとはPythonで書かれたディープラーニング(深層学習)ライブラリです。
アイデアを素早く試すため、短いプログラムで結果が得られるようにすることを重点に開発されています。Kerasを使用した実際のプログラムを紹介しますので、興味のある方はぜひご覧ください。
Kerasとその他のディープラーニングライブラリ
ディープラーニングで使われるライブラリとして、Keras以外にも開発されています。なかでもTensorflowやPyTorchは有名でよく使用されているライブラリです。用途に応じてライブラリの使い分けが重要になります。
Kerasのインストール
Kerasをインストールする方法を説明します。インストールする方法はいくつかありますが、pipでインストールする方法を紹介します。
まずKerasを使用するための前提として必要になるTensorflowをインストールします。
1
|
$pip install tensorflow
|
次にKerasをインストールします。
1
|
$ pip install keras
|
このほかに、これから説明するプログラムで使用するnumpy、pandas、sklearnをインストールします。
1
2
3
4
|
$ pip install numpy
$ pip install pandas
$ pip install sklearn
|
Kerasを使用した回帰問題プログラミング
Kerasを使用したプログラミングの例として、ボストンの住宅価格を予測する回帰問題を解くプログラムについて説明します。使用するデータセットはsklearnを使用して、以下のプログラムで取得できます。
1
2
3
4
|
from sklearn import datasets
boston_data = datasets.load_boston()
|
回帰問題のモデルを作成する
実際のソースコードはこのようになります。
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
|
import numpy as np
import pandas as pd
from sklearn import datasets
from pandas import DataFrame
from keras.models import Sequential
from keras.layers import Dense
# データを取得します。
boston_data = datasets.load_boston()
# 取得したデータを整形します。
boston_df = DataFrame(boston_data.data)
boston_df.columns = boston_data.feature_names
X = boston_df
Y = np.array(boston_data.target).reshape(-1, 1)
# ここでKerasのSequentialを使用してモデルを定義します。
model = Sequential()
# Denseを使用して全結合層を定義します。アウトプットは1つ、インプットは取得したデータのカラム数を設定します。
model.add(Dense(1, input_shape=(len(X.columns),)))
# 活性化関数はAdamOptimizer、誤差関数は平均二乗誤差を使用します。
model.compile(optimizer='adam', loss='mean_squared_error')
# モデルを確認します。
model.summary()
# バッチサイズを50に、エポック数を10に設定してモデルを作成(学習)します。
model.fit(X, Y, batch_size=50, epochs=10)
# 住宅価格に影響するデータ(変数)の係数(住宅価格にどのように影響しているか)を表示します。
coefficient_array = model.get_weights()[0]
coefficient_flatten = coefficient_array.flatten()
coefficient_df = DataFrame(boston_df.columns)
coefficient_df.columns = ['Variable']
coefficient_df['Coefficient'] = pd.Series(coefficient_flatten)
print()
print(coefficient_df)
# 作成したモデルを使用して、住宅価格を予測します。ここでは例として学習に使用したデータをそのままインプットにします。
y_pred = model.predict(X)
# 予測した結果の最初の値を表示します。
print()
print("prediction result")
print(y_pred[0])
print()
print("answer")
print(Y[0])
|
プログラムを実行すると、このような結果になります。
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
|
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 1) 14
=================================================================
Total params: 14
Trainable params: 14
Non-trainable params: 0
_________________________________________________________________
2021-01-30 10:53:39.601106: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:116] None of the MLIR optimization passes are enabled (registered 2)
Epoch 1/10
11/11 [==============================] - 0s 978us/step - loss: 17995.2938
Epoch 2/10
11/11 [==============================] - 0s 1ms/step - loss: 14470.5189
Epoch 3/10
11/11 [==============================] - 0s 968us/step - loss: 13008.7658
Epoch 4/10
11/11 [==============================] - 0s 989us/step - loss: 10678.6921
Epoch 5/10
11/11 [==============================] - 0s 1ms/step - loss: 9206.3050
Epoch 6/10
11/11 [==============================] - 0s 1ms/step - loss: 7475.0839
Epoch 7/10
11/11 [==============================] - 0s 958us/step - loss: 6207.8884
Epoch 8/10
11/11 [==============================] - 0s 954us/step - loss: 4897.9906
Epoch 9/10
11/11 [==============================] - 0s 1ms/step - loss: 4209.3877
Epoch 10/10
11/11 [==============================] - 0s 1ms/step - loss: 3188.5755
Variable Coefficient
0 CRIM -0.272320
1 ZN 0.297947
2 INDUS 0.270158
3 CHAS -0.720057
4 NOX 0.344715
5 RM 0.422051
6 AGE -0.419928
7 DIS -0.076015
8 RAD 0.417554
9 TAX 0.102275
10 PTRATIO -0.251593
11 B 0.141859
12 LSTAT -0.008134
prediction result
[64.26902]
answer
[24.]
|
答えが24に対して予測した結果は64.26902であり、良い予測結果にはなりませんでした。次に、予測精度を上げるためのチューニングについて説明します。
ハイパーパラメータのチューニング
ハイパーパラメータとは機械学習の挙動を設定するもので、モデルの精度が大きく変わることがあります。例えば、以下のプログラムのbatch_size、epochsに設定する値がハイパーパラメータになります。
1
|
model.fit(X, Y, batch_size=50, epochs=10)
|
epochsを1000に設定してプログラムを実行してみます。
1
|
model.fit(X, Y, batch_size=50, epochs=1000)
|
すると、このような結果が得られました。
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
|
:
:中省略
:
Epoch 1000/1000
11/11 [==============================] - 0s 1ms/step - loss: 29.4567
Variable Coefficient
0 CRIM -0.071425
1 ZN 0.075503
2 INDUS -0.023781
3 CHAS 3.096159
4 NOX 1.623636
5 RM 2.307985
6 AGE 0.073852
7 DIS -0.016179
8 RAD 0.106651
9 TAX -0.005726
10 PTRATIO 0.136877
11 B 0.022062
12 LSTAT -0.711267
prediction result
[29.221226]
answer
[24.]
|
答えが24に対して予測した結果は29.221226となり、予測精度が上がりました。
作成するモデルが複雑になるとハイパーパラメータの数は増えてきます。ハイパーパラメータは人が手動で設定する必要があり、予測精度を上げるために多くのハイパーパラメータをチューニングする作業が必要となってきます。
- システム
エンジニア - Kerasについてよく分かりました。
- プロジェクト
マネージャー - ご紹介ししたとおり、Kerasは機械学習プログラミングを始めようとしている方には使いやすいライブラリですので、ぜひチャレンジしてみてください。
Kerasを使用して機械学習プログラミングに挑戦しよう!
Kerasを使用した実際のプログラムを紹介しましたが、いかがでしたでしょうか。Kerasは初心者でも分かりやすいところが特長です。機械学習プログラミングを始めようとしている方には使いやすいライブラリとなります。
ぜひ機械学習プログラミングにチャレンジしたいという方は使用してみてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


新着案件New Job
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅) -
PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)