AIプログラミング

Kerasでのディープラーニングを使用したMNISTの手書き文字認識

投稿日:

Kerasでのディープラーニングを使用したMNISTの手書き文字認識

Kerasでのディープラーニングを使用したMNISTの手書き文字認識を行ってみます。
MNISTは28×28ピクセルのグレースケール画像で0~9の手書き数字があります。60000個の訓練用の画像と10000個のテスト用の画像から構成されています。

以前、ディープラーニングを使用しない機械学習で約92%の正答率を出しているので、ディープラーニングを用いることで文字認識精度がどのくらい向上するか見てみます。

機械学習-MNIST(プログラム)

ソースコード

今回作成したKerasでのディープラーニングを使用したソースコードです。

ソースコードの詳細

Kerasのインポート

Kerasのインポートを行っています。既にKerasがインポートされている場合は不要です。keras.__version__と指定することでバージョンを表示することが出来ます。

MNISTのデータをインポート

MNISTのデータセットをインポートしています。MNISTは28×28ピクセルのグレースケール画像で0~9の手書き数字があります。60000個の訓練用の画像と10000個のテスト用の画像から構成されています。

訓練用データの表示

訓練用データの表示をしています。60000個の訓練用の画像、28×28のピクセルで構成されていることが分かります。また正解用のラベルについても表示しています。 正解用のラベルは5,0,4・・・5,6,8となっていることが分かります。 この訓練用の画像と正解ラベルを学習させることでモデルを作成していきます。

テスト用データの表示

テスト用データの表示をしています。10000個のテスト用の画像、28×28のピクセルで構成されていることが分かります。また正解用のラベルについても表示しています。 正解用のラベルは7,2,1・・・4,5,6となっていることが分かります。訓練用データを使用して作成したモデルに対して、10000個のテスト用の画像を投入し、その画像が何の値を示すかを予想していきます。

特徴量の正規化

特徴量の正規化(スケーリング)を行っています。初めに(28,28)の2次元配列の画像データを28*28=784の1次元配列に変換しています。訓練用60000個のデータ全てに変換を行います。次にデータの中身を255で割っています。グレースケールは0~255の濃淡で表されており、特徴量データとして扱いやすい0~1の範囲に変換しています。 同様にテスト用データにも特徴量の正規化(スケーリング)を行います。

モデルの構築

モデルの構築を行っています。

1行目:レイヤーの線形スタックであるSequentialモデルを適用します
2行目:中間層が512個、入力層が28*28個のニューロンを指定します
3行目:中間層の活性化関数にReLU関数を適用します
4行目:出力層を10個にします
5行目:出力層の活性化関数にsoftmax関数を適用します
6行目:compileでモデルを構築します。

教師あり学習の実行

作成したモデルに対して訓練用データを使用し学習させています。

テスト用データの評価

10000個のテスト用の画像に対して、先ほど作成したモデルを使用し評価を行っています。

正答率の表示

正答率は約98%となっています。MNIST For ML Beginnerでのディープラーニングを使用しない方法の場合は約92%の正答率だったため、ディープラーニングを用いることで認識精度が向上していることが分かります。

 

-AIプログラミング
-, ,

Copyright© AI人工知能テクノロジー , 2019 All Rights Reserved.