Keras版多層パーセプトロンによるMNISTデータセットの学習

KerasはTensorFlowのラッパーであり、TensorFlowと比べ簡単にモデルを作成することができます。

そこで今回はKerasを用いて多層パーセプトロンを作成し、MNISTの学習を行いました。

 

 

 

MNISTへのアクセス

MNISTは0~9の手書き数字画像のデータベースです。

 

tensorboarのimage

 

MNISTの画像数は70000枚であります。そのうち60000枚は学習用のセットであり、10000枚はテスト用のセットです。

画像サイズは縦28×横28です。

 

MNISTは非常に有名であることから、ニューラルネットワーク等のテストとしてよく用いられます。

 

TensorFlow版の多層パーセプトロンによるMNISTの学習については、下記の記事を参照してください。

ニューラルネットワークによる数字認識 – MNISTデータセットの学習 –

 

KerasからMNISTへのアクセスは次のように行います。

 

作成モデル

使用した多層パーセプトロンのモデルを示します。

  • 階層は3とし、各階層のユニット数は入力から、784, 128, 128, 10
  • 活性化関数はRelu関数を使用
  • 出力層にはソフトマックスを使用
  • 誤差関数には交差エントロピー誤差関数を使用

 

また今回はKerasのSequentialモデルを用いて多層パーセプトロンを作成しました。

KerasにはSequentialモデルとfunctional APIを使用したモデルの二つがあります。functional APIを使用したほうがより高度なモデルを作成できますが、Sequentialモデルは非常に簡単にモデルを作成することができます。

 

コード

使用したコードを下記に示します。実行はPython 3.6、TensorFlow 1.8、Keras 2.2.2を用いました。

 

 

このように多層パーセプトロンによる学習を、80行ほどのコードで書くことができました。TensorFlowによる多層パーセプトロンと比べるとコードの量が半分近くで書くことができます。

 

実行結果

実行結果を示します。

 

Kerasは1 Epochにかかった時間や、学習データの判定率、検証データの判定率等を表示してくれます。

このようにKerasなら大きな設定をしなくても、途中経過を表示してくれます。

 

また多層パーセプトロンの判定率も96.6%となっており、正しく学習することができています。

 

まとめ

  • Keras版の多層パーセプトロンを用いてMNISTの学習を行った
  • Kerasによるモデルの作成方法は二つあり、今回は簡単に作成できるSequentialモデルを使用した
  • Kerasなら学習の途中経過を少しの設定で表示してくれる

 

関連記事

ニューラルネットワーク・ディープラーニングのまとめ

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA