Python 手寫數字識別實戰分享

       手寫數字識別作爲一個深度學習類入門級別的應用,被廣大愛好者所使用,在實際的工作中正好有一個實際的場景需求用到了數字和字母的識別,這裏先以手寫數字識別爲例來對該類型的任務進行講解。

     本文的實踐主要是基於卷積神經網絡來進行的,卷積神經網絡作爲如今深度學習的核心自然有它獨特的地方。

     卷積神經網絡的提出是受生物自然視覺認知機制的啓發,它的核心在於其採用了卷積層和子採樣層組合的特徵提取方式。CNN一共採用了三種技術來降低模型的計算複雜度。

1)局部感受野

       首先是局部感知技術,CNN中的每個神經元不再使用全連接的形式,而是隻與局部的神經元相連接,即:只關注局部的信息而不會對整體數據進行感知,這有效降低了網絡的參數數量;

2)權值共享技術

     其次是權值共享技術,通過共享卷積核來進一步地減少訓練的參數;一組連接可以共享同一個權重,而不是每個連接有一個不同的權重,這樣又減少了很多參數。

3)池化技術

     Pooling層利用圖像局部相關性的原理,對圖像進行子抽樣,可以減少數據處理量同時保留有用信息。通過去掉Feature Map中不重要的樣本,進一步減少參數數量。對於圖像識別任務來說,卷積神經網絡通過儘可能保留重要的參數,去掉大量不重要的參數,來達到更好的學習效果。通過池化得到的特徵數據維度更低易於模型的計算,且由於參數的減少能夠在一定程度上防止模型過擬合的發生。

     關於原理性的內容就說到這裏了,下面進入到我們的具體實踐中,我們這裏所用到的數據集來源於sklearn模塊,將MNIST數據集解析存儲爲圖像數據,之後基於圖像分類的方式來完成後面的工作,當然了,這裏的sklearn原始數據解析過程並非是必須的,只是這裏個人想把這個問題建模成完整的圖像分類任務,需要有一個本地圖像數據集的加載過程,下面是該部分工作的具體代碼實現:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章