黃一天 陳芝彤
摘要
在大數(shù)據(jù)時代,使用深度學習算法訓練的卷積神經(jīng)網(wǎng)絡(luò)模型在計算機視覺領(lǐng)域取得了顯著的成果。Pytorch作為一個最新的深度學習框架,具有GPU加速和支持動態(tài)神經(jīng)網(wǎng)絡(luò)等優(yōu)點,使得訓練模型更加簡單。本文在Pytorch下利用卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)手寫數(shù)字識別,在測試集上取得高于98%的準確率。
【關(guān)鍵詞】卷積神經(jīng)網(wǎng)絡(luò) 手寫數(shù)字識別Pytorch
1 引言
近年來,隨著科學技術(shù)的不斷發(fā)展,人們對電子材料的需求越來越大,這使得手寫識別這一項技術(shù)的出現(xiàn)與發(fā)展。有了這項技術(shù),人們可以將手寫筆記文稿掃描入電腦并被識別成文檔,人們也可以對智能設(shè)備進行手寫錄入信息,這項技術(shù)有非常大的研究價值。
2 卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)是一種帶有卷積運算的網(wǎng)絡(luò),采用局部感知域和權(quán)值共享的方法。一個典型的結(jié)構(gòu)一般包括以下幾層:卷積層、池化層和全連接層。每個平面由多個獨立的神經(jīng)元組成,相鄰兩層的神經(jīng)元之間互相連接,而處于同一層的神經(jīng)元之間沒有連接。最終的輸出結(jié)果是由每層網(wǎng)絡(luò)和偏置的共同影響下得出的。經(jīng)過大量訓練得出的權(quán)重就可以被用于神經(jīng)網(wǎng)絡(luò)之中,對圖像進行識別與處理。
2.1 卷積層
一個圖像可以被看做一個多維矩陣。在卷積層中,圖像與卷積核進行卷積運算。設(shè)輸入圖片長和寬為W,F(xiàn)ilter大小為F×F,步長為S,padding的像素數(shù)為P,輸出的圖片的長和寬為W2。則:
假設(shè)有一個5×5的圖像,與一個3×3的卷積核進行卷積運算,如圖1所示。
按照此過程計算,最終可以得到一個3×3的feature map,符合上述公式。
2.2 池化層與全連接層
圖像經(jīng)卷積層輸出后進入池化層,池化層旨在通過降低特征面的分辨率來獲得具有空間不變性的特征,池化層主要可以實現(xiàn)二次提取特征的功能。
而在全連接網(wǎng)絡(luò)中,將所有二維圖像的特征圖拼接為一維特征作為全連接網(wǎng)絡(luò)的輸入。全連接層的輸出可通過對輸入加權(quán)求和并通過激活函數(shù)的響應(yīng)得到。
3 Pytorch框架
Pytorch是最近流行的一個深度學習框架,不僅能實現(xiàn)強大的GPU加速,還能支持動態(tài)神經(jīng)網(wǎng)絡(luò)。Pytorch既可以看作加入了GPU支持的numpy,同時也可以看成一個擁有自動求導功能的強大的深度神經(jīng)網(wǎng)絡(luò)。
4 實驗
4.1 MINIST數(shù)據(jù)集
本文使用的數(shù)據(jù)集是MINIST,這是一個計算機視覺數(shù)據(jù)集,它包含70000張手寫數(shù)字的灰度圖片,數(shù)字范圍從0~9,每一張圖片有28*28個像素點。
4.2 實驗步驟
第一步:導入需要用的庫,如torch、torch.nn等。
第二步:設(shè)置批處理尺寸batch size大小為64,分別定義訓練數(shù)據(jù)集和訓練批處理數(shù)據(jù),測試數(shù)據(jù)集和測試批處理數(shù)據(jù)。
第三步:創(chuàng)建兩個卷積層,第一個卷積層卷積參數(shù)為輸入通道1,輸出通道16,卷積核大小5,步長1,填充大小2,然后采用ReLU激活函數(shù),最大池化層來處理數(shù)據(jù),第二個卷積層卷積參數(shù)為輸入通道16,輸出通道32,卷積核大小5,步長1,填充大小2,然后采用ReLU激活函數(shù),最大池化層處理數(shù)據(jù),最后設(shè)置一個全連接層。
第四步:定義前向傳播的過程。
第五步:定義損失函數(shù)和優(yōu)化方法,優(yōu)化采用SGD(隨機梯度下降),學習速率設(shè)為0.01,動量設(shè)為0.5。
第六步:計算卷積神經(jīng)網(wǎng)絡(luò)的損失率并計算測試集上的準確率。
第七步:每一個epoch打印數(shù)據(jù)。
4.3 實驗結(jié)果
實驗結(jié)果如表1所示。
5 結(jié)語
本文基于Pytorch框架搭建了一個結(jié)構(gòu)較為簡單的神經(jīng)網(wǎng)絡(luò)。使用測試集進行測試后得到此網(wǎng)絡(luò)的準確性達到98%,對圖片的識別已經(jīng)能夠有較高的準確性。綜上所述,此神經(jīng)網(wǎng)絡(luò)系統(tǒng)能夠較好地實現(xiàn)手寫數(shù)字識別。
參考文獻
[1]丁小剛.BP神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)在文字識別中的應(yīng)用研究[D].武漢:華中科技大學,2014.
[2]盧宏濤,張秦[J].深度卷積神經(jīng)網(wǎng)絡(luò)在計算機視覺中的應(yīng)用研究綜述[J].數(shù)據(jù)采集與處理,2016.
[3]GuJiu-Xiang,WangZhen-Hua,JasonKuen,etal.Recent Advances in ConvolutionalNeural Networks.arXiv:1512.07108v5,2017.
[4]Bouvrie J.Notes On ConvolutionalNeural Networks,MIT CBCL TechReport,Cambridge,MA,2006.
[5]廖星宇.深度學習入門之Pytorch[M].第一版.電子工業(yè)出版社,2017.