用 TensorFlow 架構CNN網路層 來做手寫數字辨識

總之我先上全碼

這次目標為Demo與 TensorFlow 初探,為求快速我每次只用100張圖像進行訓練,做100次後的成功率約為90%。

原始碼 :https://github.com/Chunshan-Theta/DeepLearning/tree/master/tensorFlow

這邊主要著重寫架構的概念,而code細部解析我會另外分幾個小節去各別說明:(緩慢整理中)

將手寫數字照片庫MNIST_data 的數值還原成圖片

儲存 tensorFlow 訓練結果與重複使用


那就開始進行到概念說明部分:

首先,這次的題目是利用機器學習來做到影像辨識,要辨識的影像為手寫照片,那我之前也有用很原始的方法去寫,辨識路跑選手號碼牌系統 on Python2.7,而土著的方式學完當然也要來學學最新技術 — Machine learning 中的 CNN,但我向來不是理論派的,還是讓我們把sample執行成功吧!

那這次的程式碼中,我大致上分了四個部分:

  1. 繪製來源圖片
  2. 建構學習神經層
  3. 進行訓練與評估成效
  4. 使用訓練產出的模型進行預測
  5. 訓練結果儲存與讀取

基本上四個部分我會進行程式碼的個別說明,將連結放在上方的部分,那這邊就不多說明了。

再來要說一下這次的產出與環境:

環境:TensorFlow / python2.7 / ubuntu 16

產出:

訓練時間:5分鐘

預測成功率:90%以上

樣本數:100*100 張

樣本規格:MNIST_data –  27*27的黑白手寫圖片


這次的內容比起先前來說,有更多地方需要自己去定義外,還有要許多的先備知識,要怎麼樣確定自己先備知識夠不夠呢?

Convolution_schematicjNKSJ

個人認為,至少要先明白這兩張圖在表達甚麼含意,如果不太清楚建議看看教材或是最下方的影片。


最後,以下是我入手學習的教材,有興趣可以看看~

範例是用1000張做1000次的樣子,成功率可以到96%的樣子。

6 Comments

Add a Comment

發佈留言必須填寫的電子郵件地址不會公開。