手寫數(shù)字識別是神經(jīng)網(wǎng)絡經(jīng)典案例之一,該項目數(shù)據(jù)集小、神經(jīng)網(wǎng)絡簡單、任務簡單,但是集合了CNN網(wǎng)絡中幾乎所有該有的東西。下面是該項目的大致流程。
首先,導入必要的庫以及加載數(shù)據(jù)集,并且區(qū)分開數(shù)據(jù)集以及訓練集。緊接著,對數(shù)據(jù)進行預處理,將圖像變?yōu)樵瓉淼?8像素*28像素的形狀,可以通過reshape()方法的參數(shù)指定期望的形狀,更改NumPy數(shù)組的形狀。然后對MNIST數(shù)據(jù)集實現(xiàn)神經(jīng)網(wǎng)絡的推理處理,輸入層為784個神經(jīng)元,輸出層有10個神經(jīng)元,此外這個神經(jīng)網(wǎng)絡共有2個隱藏層,第一層為50個神經(jīng)元,第二層有100個神經(jīng)元。我們定義一個函數(shù)實現(xiàn)神經(jīng)網(wǎng)絡的推理過程,并且評價它的識別精度。識別精度指神經(jīng)網(wǎng)絡所預測的答案正確個數(shù)與正確解標簽的比值。以上就是MNIST數(shù)據(jù)集的神經(jīng)網(wǎng)絡的實現(xiàn)。

同一個分類任務,我們也可以用機器學習的算法來做,在用機器學習算法來做時,首先要明確feature和label,即我們需要實現(xiàn)確定好特征,特征數(shù)目過少,我們可能無法精確的分類出來,如果特征數(shù)目過多,又可能會由于我們在分類過程中賦予某個特征不恰當?shù)臋?quán)重導致分類錯誤,即過擬合。而神經(jīng)網(wǎng)絡的出現(xiàn)使我們不需要做大量的特征工程,我們可以直接把數(shù)據(jù)放進去,讓它自己訓練,自我“修正”,即可得到一個較好的效果。
