手寫數字識別是神經網絡經典案例之一,該項目數據集小、神經網絡簡單、任務簡單,但是集合了CNN網絡中幾乎所有該有的東西。下面是該項目的大致流程。
首先,導入必要的庫以及加載數據集,并且區分開數據集以及訓練集。緊接著,對數據進行預處理,將圖像變為原來的28像素*28像素的形狀,可以通過reshape()方法的參數指定期望的形狀,更改NumPy數組的形狀。然后對MNIST數據集實現神經網絡的推理處理,輸入層為784個神經元,輸出層有10個神經元,此外這個神經網絡共有2個隱藏層,第一層為50個神經元,第二層有100個神經元。我們定義一個函數實現神經網絡的推理過程,并且評價它的識別精度。識別精度指神經網絡所預測的答案正確個數與正確解標簽的比值。以上就是MNIST數據集的神經網絡的實現。
同一個分類任務,我們也可以用機器學習的算法來做,在用機器學習算法來做時,首先要明確feature和label,即我們需要實現確定好特征,特征數目過少,我們可能無法精確的分類出來,如果特征數目過多,又可能會由于我們在分類過程中賦予某個特征不恰當的權重導致分類錯誤,即過擬合。而神經網絡的出現使我們不需要做大量的特征工程,我們可以直接把數據放進去,讓它自己訓練,自我“修正”,即可得到一個較好的效果。