Python深度學習4:MNIST手寫數字識別模型

前言

之前寫了一篇「Python深度學習3:深度學習基本介紹」介紹深度學習的基本概念,這次我們就將概念轉為實際程式碼,使用Tensorflow Keras製作一個神經網路,用於MNIST手寫辨識阿拉伯數字,在程式語言第一隻程式碼為「Hello World」,而機器學習領域裡,MNIST就相當於「Hello World」。

 

開發環境

一般可以使用Python程式語言直接執行,但也可以使用jupyter Notebook來建構程式碼,可以將程式碼分段執行,當出現問題時可以非常方便的比對每一行程式碼的執行結果,建構方式可以使用Anaconda軟體,方便在每個系統執行,此外,也可以使用雲端平台進行模型訓練或學習,Google提供Colab平台,可以使用免費的GPU及TPU加速模型訓練,內部系統為Linux系統,而且也安裝大部分軟件,方便使用者操作,介紹的部分可以參考「Python深度學習1:Google Colab介紹」及「Python深度學習2:Python基礎語法介紹」。

 

程式碼講解

 

Step 1. 下載資料集(Dataset)

 

Step 2. 圖像資料歸一化(Normalization)

 

Step 3. 模型建立

 

Flatten Layer:將輸入展平,不影響批量大小。圖像攤平成1維陣列 28 x 28 的784特徵。

Dense Layer:全連接層,input 784個特徵連結為128個神經元。

Dropout Layer:訓練過程隨機丟棄20%的神經元。

Dense Layer:輸出10個神經元,透過 softmax 激活函數,轉成0~9的預測機率。




Step 4. 模型訓練

 

Step 5. 模型評估

 


Step 6. 模型驗證

先在小畫家製作手寫5,再將圖片存放至Google雲端硬碟。

 

 

從雲端硬碟中取得圖片路徑,將圖像歸一化,並調整圖像Size,即可使用model.predict函式推論圖像,即可得到最後答案。

 

 

 

小結

透過以上範例講解,能夠建立一個簡單的數字辨識模型,相信對於機器學習有了一些了解,數字辨識為機器學習第一個模型,後續還有許多模型演算法可以學習,本篇博文到這裡,期待下一篇博文吧!

 

參考資料

TensorFlow 是用於機器學習的端對端開放原始碼平台

Day 03:撰寫第一支完整的 Keras 程式

Python深度學習1:Google Colab介紹

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論