0
1

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でMNISTデータの学習)

Posted at

#はじめに
この記事は個人の学習の記録です。
内容は以下の参考記事で、丁寧に詳しく書かれています。
皆様は以下を参考にしてください。

参考にした記事
ソースコード

##実施時のメモ
上記のコードをGoogle Colaboratoryで実施した。
Colaboratoryは補完してくれて便利だ。
以下、ソースコードと見並べて参照することを前提としたメモ。

###MNISTデータを読み込む
keras.datasetsからmnist.load_data()を使って、訓練データ(60000個)、テストデータ(10000個)を読み込む。
なお、読み込んだデータx_train及びx_testの形状は以下の値を実行(評価)すればわかる。

x_train.shape
x_test.shape

###MNISTデータを加工する
28×28次元のデータを784次元のベクトルにrehsapeし、データの方をfloat32に修正する。
さらに、各値を255で割っている。
これは多分画像データの各ドットが0~255の値を取っているのを0~1の範囲に正規化する処理。
機械学習ではデータを標準化や正規化してから扱う。

[標準化と正規化]
(https://qiita.com/yShig/items/dbeb98598abcc98e1a57)

また、目的変数(y)がその大きさに意味をなさない変数であるため、目的変数の数値の大きさが結果に影響を与えないように、カテゴリカルデータ(one-hot表現)に変換。
※もちろんこれらの加工処理はtestデータに対しても行う。

x_train = x_train.reshape(60000,784).astype('float32')
x_train /= 255
y_train = keras.utils.to_categorical(y_train,10)

###モデルの構築
入力層と全結合層(=ここでは出力層)の2層からなるモデルを作っている。
入力層は784ノード。全結合層は結果を10分類したいので、ノードが10と指定されている。
また、出力層の活性化関数は教科書通りにsoftmaxを使用。
今回は誤差関数としてcategorical_crossentropyを使用。以下リンク先によると、カテゴリカルにした目的変数に対するクロスエントロピーを使用する場合はこれを使用するらしい。

categorical_crossentropyを使う場合,目的値はカテゴリカルにしなければいけません.

  • クロスエントロピーとは?
    交差エントロピー

  • rmspropとは?
    勾配の大きさに応じて 学習率を調整した(ミニバッチ)SGD。
    最適化アルゴリズムに関しては、下記の記事が非常に参考になった。

【2020決定版】スーパーわかりやすい最適化アルゴリズム -損失関数からAdamとニュートン法-

また、こちらの記事も詳しそうなので後で読みたい。
Intro to optimization in deep learning: Momentum, RMSProp and Adam

###学習
epochs:エポックは1つのデータを何回繰り返して学習させるかの値
fit関数の引数についてはこちらを参考にした。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?