► 前言
之前寫了一篇「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函式推論圖像,即可得到最後答案。
►小結
透過以上範例講解,能夠建立一個簡單的數字辨識模型,相信對於機器學習有了一些了解,數字辨識為機器學習第一個模型,後續還有許多模型演算法可以學習,本篇博文到這裡,期待下一篇博文吧!
► 參考資料
評論