MNIST LeNet(ルネット) Keras TensorFlow, Keras
機械学習ディープラーニング・シャローラーニング ベストプラクティス
TensorFlow, Keras, LeNet の教科書
手書き数字のdata setの MNIST を10クラス(0~9)に分類します。モデルは1998年に発表されたLeNet-5(ルネット)です。Convが2層,Denseが3層ですが,accuracy: 0.986 とけっこう良い成績がでます。
1998年に発表されたLeNet-5(ルネット)の論文の中に,他のアルゴリズムと比較したところがあります。エラー率がLeNet-5とほぼ互角だったのがサポートベクタSVMだったのです。
2012年にILSVRCで,AlexNetが1位になるまでディープラーニングが注目されなかったのは,多くは,サポートベクタSVMに関心があったからです。
近年,ゲーミングPCやビットコインのマイニング用にGPUが発達し,それをディープラーニングへと流用することにより,ディープラーニングが実用的になったのです。
(2023-11-30 Python3.10.9(GPUマシン)で動作確認済み)
上に書いたとおり,Convが2層,Denseが3層です。それぞれにパラメータがあります。構成は,Conv-Pool-Conr-Pool-Flat-Dense-Dense-Denseであり,Pool層とFlat層にはパラメータはありません。
特徴マップにはパラメータの数が出力されていますが,その根拠になる算出式を書いておきました。
入力データは,28x28ピクセルで,trainが60,000点,testが10,000点です。入力データはkeras.datasetsから読み込み,その方法が独特なので注意してください。またけっこう前処理がありますのでコードをみてください。
この構成は,ディープラーニングとしてはほぼ最低限であり,実用的ではないと思われます。練習には最適かと。
下の枠に添付のhtmlファイルは「Jupyter Notebook」の.ipynbファイルをhtml化したものでそれぞれのファイルは左上隅からダウンロードできます。