3
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Keras入門は家を出る前の5分で済ませよう

Last updated at Posted at 2020-06-02

はじめに

この記事では、Kerasの大まかな使い方を一通り把握することを目標としています。

目次

• Kerasとは
• ライブラリのインポート
• モデルの作成
 ・Sequential
 ・Flatten
 ・Dense
 ・Dropout
• モデルの訓練課程の設定
 ・compile
• モデルの訓練
 ・fit
• モデルの評価
 ・evaluate

Kerasとは

Kerasは、迅速な実験を可能にすることに重点を置いて開発されたもので、TensorFlowまたはCNTKTheano上で実行可能な高水準のニューラルネットワークライブラリです。

(⇨"https://ja.wikipedia.org/wiki/Keras")

ライブラリのインポート

qiita.py
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Flatten, Dense, Dropout

※今回はデータセットとしてmnistを採用しています。

モデルの作成

qiita.py
model = Sequential()
model.add(flatten(引数))
model.add(Dense(引数))
model.add(Dropout(引数))

※もちろんモデル作成は、Flatten,Dense,Dropoutが一つということはなく、いくつもの層を付け加えていきます。Flatten,Dense,Dropuoutの引数については下記で触れています。

Flatten

Flattenは入力を平滑化するモジュールです。
以下に、Flattenの引数を示します。

input_shape

input_shapeは、入力の形を指定するものです。
例えば、(784,)と書かれている場合、入力は(28,28)となります。この場合、784個のドットがあり、一つのドットに一つの数値が適用されます。つまり、今回の場合、784次元のデータを扱っています。

Sequential

Sequential(線形)というのは、網状の複雑なニューラルネットワークを簡略化したものです。Sequentialモデルは、layer(レイヤー)と呼ばれるニューロン(パーセプトロン)の塊によって一列につながっています。

Dense

Denseは、ニューラルネットワークの層の形状のうち『全結合層』を表現出来るものです。全結合層とは、その層内の全てのニューロンが次の層の全ニューロンと接続するものを言います。
以下に、Dense作成時の引数を示します。

units

unitsは、その層から出力される次元数を表すものです。つまり、Denseでいうところのニューロン数と言えます。

activation

activationは、活性化関数を指定するものです。活性化関数とは何かというと、その層の出力刺激量を計算する関数を文字列で指定するものです。デフォルトでは、線形活性化:(a(x)=x)が設定されています。詳しくは以下を参照してください。
⇨ [深層学習の活性化関数]
(https://qiita.com/kuroitu/items/73cd401afd463a78115a)


この他の、Dense作成時の引数は以下を参照してください。
⇨ [Dense作成時の引数]
(https://keras.io/ja/layers/core/)


Dropout

Dropoutは、全結合層との繋がりをどのくらい無効化するかを指定するものです。これを指定することにより、過学習を予防することができます。

モデルの訓練過程の設定

qiita.py
model.compile(引数)

以下に、compileの引数を示します。

optimizer

optimizerは、最適化アルゴリズムを指定するものです。詳しくは、以下を参照してください。
深層学習の最適化アルゴリズム

loss

lossは、損失関数を指定するものです。
損失関数とは何かというと、予測したものと正解の間にどのくらいの誤差が存在するかを計算するものです。詳しくは、以下を参照してください。
⇨ [深層学習の損失関数]
(https://mj-vitag.com/contents/?p=227)

metrics

metricsは、評価関数を指定するものです。
評価関数とは何かというと、モデルの性能を図るために使われるものです。詳しくは、以下を参照してください。
⇨ [深層学習の評価関数]
(https://qiita.com/kou2kkkt/items/9a947111800555ebc6ef)


この他の、モデルの訓練課程における引数は以下を参照してください。
⇨ [compileの引数]
(https://keras.io/ja/models/model/)


モデルの訓練

qiita.py
model.fit(x_train, y_train, 引数)

以下に、fitの引数を示します。

batch_size

batch_sizeは、一回に計算するデータの数を言います。これを小さくすることで、使用するメモリを少なくすることが出来ますが、計算回数が多くなってしまうという欠点があります。つまり、バッチサイズは『ちょうどいい具合に』選んでやる必要があります。

epochs

epochsは、学習する回数を指定するものです。
こちらも回数が少ないと、十分に訓練データを学習することが出来ませんが、あまりに多いとか学習を引き起こします。こちらも『ちょうどいい具合に』選んでやる必要があります。

batch_size、epochsを『ちょうどいい具合に』と言われても難しいと思うので、参考までに以下を参照してください。
⇨ [batch_size、epochsの決め方]
(https://qiita.com/kenta1984/items/bad75a37d552510e4682)


この他の、モデルの訓練における引数は、以下を参照してください。
⇨ [fitの引数]
(https://keras.io/ja/models/model/)


モデルの評価

qiita.py
model.evaluate(x_train, y_train, 引数)

以下に、evaluateの引数を示します。

verbose

verboseは、進行状況の表示モードを指定するものです。0=表示なし、1=プログレスバーを指定します。


この他の、モデルの評価における引数は、以下を参照してください。
⇨ [evaluateの引数]
(https://keras.io/ja/models/model/)


#おわりに
Kerasについて大まかにではありますが、まとめてみました。
Kerasは、引数の扱いが難しく、理解しづらいですが、この記事が何かの役に立てば幸いです😌

#参考文献
https://github.com/tensorflow/tensorflow
https://github.com/Microsoft/cntk
https://github.com/Theano/Theano
https://keras.io/ja/layers/core/
https://keras.io/ja/models/model/
https://mj-vitag.com/contents/?p=227
https://qiita.com/kuroitu/items/73cd401afd463a78115a
https://qiita.com/ZoneTsuyoshi/items/8ef6fa1e154d176e25b8
https://qiita.com/kou2kkkt/items/9a947111800555ebc6ef
https://qiita.com/kenta1984/items/bad75a37d552510e4682

3
15
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
3
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?