国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Keras手寫數(shù)字識別模型的改進(jìn)

2021-11-10 03:49高宇鵬胡眾義
計算技術(shù)與自動化 2021年2期
關(guān)鍵詞:卷積神經(jīng)網(wǎng)絡(luò)

高宇鵬 胡眾義

關(guān)鍵詞:Keras;卷積神經(jīng)網(wǎng)絡(luò);MNIST數(shù)據(jù)集

隨著社會發(fā)展,試卷分?jǐn)?shù)、快遞單據(jù)、財務(wù)票據(jù)陽銀行票據(jù)等多個領(lǐng)域的手寫數(shù)字信息越來越多,勾了減輕數(shù)據(jù)的人工計算與手動錄入系統(tǒng)的工作量,手寫數(shù)字識別技術(shù)逐步發(fā)展起來。陳龍等采用3P神經(jīng)網(wǎng)絡(luò)對MNIST數(shù)據(jù)集中的10000個樣本進(jìn)行仿真實驗,取得97.2%識別率。宋曉茹等引人Sigmoid激活函數(shù),采用深度神經(jīng)網(wǎng)絡(luò),將識別率提高到97.9%。Qiao,Junfei等采用自適應(yīng)深度Q學(xué)習(xí)策略將識別率提高到了99.18%。但是Sigmoid激活函數(shù)計算量較大,反向傳播時容易出現(xiàn)梯度消失的情況,因此張哲等采用Relu激活函數(shù)代替Sigmoid,基于Tenso rflow框架,利用Softmax函數(shù)進(jìn)行歸一化處理,對MNIST數(shù)據(jù)集進(jìn)行訓(xùn)練,將識別率提高為99.2%。Tensorflow框架對MNIST數(shù)據(jù)集進(jìn)行訓(xùn)練,能取得較高的識別率,但是需要編寫的代碼較多,訓(xùn)練模型耗時較長,針對這種問題,楊永翌提出采用Keras模型構(gòu)建卷積神經(jīng)網(wǎng)絡(luò),采用Tanh激活函數(shù),對MNIST數(shù)據(jù)集進(jìn)行訓(xùn)練,取得98. 38%識別率。楊永翌采用Keras模型減少了代碼,但是降低了識別率,郭夢潔同樣采用Keras模型,利用Relu激活函數(shù)代替Tanh,結(jié)合Adam優(yōu)化器,對MNIST數(shù)據(jù)集進(jìn)行訓(xùn)練,識別率達(dá)到99. 25%。王梅等采用改進(jìn)VGG-16和樸素貝葉斯方法對MNIST數(shù)據(jù)集進(jìn)行訓(xùn)練,識別率達(dá)到99. 36%。余圣新等采用改進(jìn)Inception卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)對MNIST數(shù)據(jù)集進(jìn)行訓(xùn)練,識別率達(dá)到99. 45%。在Keras模型的基礎(chǔ)上,對模型進(jìn)行改進(jìn),對MNIST數(shù)據(jù)集進(jìn)行識別,識別率達(dá)到99. 54%,取得較好效果。

1Keras模型

Keras是由Python語言編寫的開源神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)庫。與Tensorflow相比,Keras提供了強大的神經(jīng)網(wǎng)絡(luò)API庫,采用模塊化的編程,縮減代碼編寫量,是深度學(xué)習(xí)中使用較多的模型之一。Keras主要有Sequential和Model兩種模型。Sequential模型是Model模型的特例,它通過add()方法將多個網(wǎng)絡(luò)層線性的堆疊,因此它又被稱為序列模型。Sequential模型的第一層需要輸入shape數(shù)據(jù)參數(shù),其余層可根據(jù)第一層的shape數(shù)據(jù)依次推導(dǎo),不需要接收數(shù)據(jù)。這種模式輸入和輸出都是單一的,層層之間關(guān)聯(lián)簡單,沒有跨層關(guān)聯(lián),因此編譯速度快,在簡單的模型設(shè)計中使用較多。Model模型是針對復(fù)雜的神經(jīng)網(wǎng)絡(luò)而設(shè)計的一種模型,它采用多輸入和多輸出,通過model. layers添加各層信息,提供了共享層模型,實現(xiàn)訓(xùn)練模型代碼的重用,在構(gòu)建復(fù)雜神經(jīng)網(wǎng)絡(luò)中被經(jīng)常使用。

2激活函數(shù)

激活函數(shù)將非線性模型引入神經(jīng)網(wǎng)絡(luò)中,強化了神經(jīng)網(wǎng)絡(luò)的模擬和學(xué)習(xí)能力,在訓(xùn)練復(fù)雜類型數(shù)據(jù)時,激活函數(shù)起著非常重要的作用。常用激活函數(shù)有Sigmoid、Tanh和Relu函數(shù)。

2.1Sigmoid激活函數(shù)

文獻(xiàn)[2]在手寫數(shù)字識別過程中,采用的激活函數(shù)為Sigmoid函數(shù)。Sigmoid函數(shù)的公式為:

2.2Tanh激活函數(shù)

文獻(xiàn)[6]基于Keras模型,采用Tanh作為激活函數(shù)。Tanh函數(shù)被稱為雙切正切函數(shù),其公式為:

圖2為Tanh函數(shù)的曲線圖,可以看出Tanh函數(shù)與Sigmoid相比較,Sigmoid函數(shù)的輸出值都大于0,減慢了模型的收斂速度。Tanh函數(shù)的輸出值為[-1,1],與Sigmoid函數(shù)相比較,Tanh函數(shù)提高了模型的收斂速度。

從推導(dǎo)而得的公式3可知,Tanh函數(shù)相當(dāng)于Sigmoid函數(shù)的變形,從本質(zhì)上并沒有解決梯度消失的問題,因此Tanh函數(shù)也不適合深層次神經(jīng)網(wǎng)絡(luò)模型的構(gòu)建。

2.3Relu激活函數(shù)

Relu激活函數(shù)是目前應(yīng)用比較多的一個函數(shù),它的公式為:

從圖(3)、公式(4)和公式(5)可知,Relu激活函數(shù)其實就是一個求最大值的分段函數(shù)。當(dāng)x的取值小于或等于O時,Relu函數(shù)不被激活,輸出為0;當(dāng)x的取值大于O時,Relu函數(shù)被激活,取值為x。Relu函數(shù)沒有飽和區(qū)域,所以不存在梯度消失的情況,由于輸入值x為負(fù)時,Relu函數(shù)不被激活,意味著同一時刻只有部分神經(jīng)元被激活,使得網(wǎng)絡(luò)變得比較稀疏,與Sigmoid和Tanh函數(shù)相比,Relu函數(shù)提高了訓(xùn)練模型的效率和收斂的速度。因此改進(jìn)的算法中采用的激活函數(shù)為Relu函數(shù)。

3基于Keras構(gòu)建CNN手寫數(shù)字識別模型的改進(jìn)

3.1卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的改進(jìn)

卷積神經(jīng)網(wǎng)絡(luò)的英文全稱為ConvolutionalNeural Network(CNN),是由加拿大神經(jīng)科學(xué)家Hubel和Wiesel在研究貓腦皮層的神經(jīng)元時提出。其主要思想是局部卷積、權(quán)值共享、空間或時間上的采樣,其中卷積操作是卷積神經(jīng)網(wǎng)絡(luò)的核心。卷積操作就是利用卷積核對特征圖像的像素點按照從左到右的滑動方向進(jìn)行局部卷積運算,從而提取每一層圖像的局部特征(Feature Map)。卷積運算的公式如下所示:

一般卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)主要由卷積層、池化層和全連接層的重復(fù)組合。文獻(xiàn)[6]在卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計中,由兩個卷積層、一個池化層和兩個全連接層組成,圖4描述了文獻(xiàn)[6]采用的傳統(tǒng)的卷積網(wǎng)絡(luò)。首先對28*28的灰度圖像進(jìn)行3*3的兩次卷積操作,得到64個24*24的圖像;然后通過2*2的池化層操作,變?yōu)?4個12*12的圖像;最后加入2個全連接層(1個為激活函數(shù)為Relu,1個回歸函數(shù)為Softmax),輸出訓(xùn)練的結(jié)果。

但是在實際的卷積操作過程中,每經(jīng)過1次卷積操作就會增加1次訓(xùn)練參數(shù)。傳統(tǒng)的卷積網(wǎng)絡(luò)結(jié)構(gòu)在第1次卷積操作后,參數(shù)個數(shù)為320;第2次卷積操作后,參數(shù)個數(shù)達(dá)到了18496;經(jīng)過2次全連接后,最終參數(shù)個數(shù)為1199882。過多的參數(shù)增加了訓(xùn)練時間,同時會造成過擬合情況?;诖?,在傳統(tǒng)的卷積網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上進(jìn)行了結(jié)構(gòu)的改進(jìn),采用兩個卷積層、兩個池化層和兩個全連接層構(gòu)成。首先對28*28的灰度圖像進(jìn)行5*5卷積核操作,采用2*2模型進(jìn)行池化操作;其次進(jìn)行3*3卷積核操作,采用2*2模型進(jìn)行池化操作,為了防止參數(shù)過多造成的過擬合,加入了Dropout層,丟棄50%的神經(jīng)元,簡化了參數(shù);最后進(jìn)行3次全連接(2次激活函數(shù)為Relu,1次回歸函數(shù)為Softmax),輸出訓(xùn)練的結(jié)果。改進(jìn)后的卷積網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示。

3.2實驗結(jié)果分析

改進(jìn)模型采用的實驗環(huán)境為:Windowsl0的操作系統(tǒng),InteI(R)

Core (TM)i7-4700的CPU,16GP的內(nèi)存容量,NVIDIA GeForce RTX 2070的GPU;Anaconda3下的Jupyter工具;基于python語言的Keras框架。實驗中采用的數(shù)據(jù)集為目前常用的MNIST數(shù)據(jù)集,對文獻(xiàn)[6]中傳統(tǒng)的卷積網(wǎng)絡(luò)結(jié)構(gòu)和采用的改進(jìn)卷積網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了測試對比分析。

表1為采用傳統(tǒng)的卷積網(wǎng)絡(luò)結(jié)構(gòu)實驗數(shù)據(jù)。首先進(jìn)行了2次卷積操作,得到18496個訓(xùn)練參數(shù);然后經(jīng)過1次池化層操作,加入Dropout防止過擬合,丟棄25%的神經(jīng)元,并加入Flatten展平層,將訓(xùn)練的數(shù)據(jù)展平為適合的網(wǎng)絡(luò)結(jié)構(gòu);再次進(jìn)行了1次激活函數(shù)為Relu的全連接層和1次回歸函數(shù)為Softmax的全連接層,中間又加入了Dropout防止過擬合,丟棄25%的神經(jīng)元,實驗最后總的訓(xùn)練參數(shù)為1199882。

表2為采用改進(jìn)卷積網(wǎng)絡(luò)結(jié)構(gòu)的實驗數(shù)據(jù)。首先進(jìn)行了1次卷積操作,得到832個訓(xùn)練參數(shù),經(jīng)過1次池化層操作;其次再進(jìn)行了1次卷積操作,得到4624個訓(xùn)練參數(shù);經(jīng)過1次池化層操作;然后加入Dropout防止過擬合,丟棄50%的神經(jīng)元,并加入Flatten層,將訓(xùn)練的數(shù)據(jù)展平為適合的網(wǎng)絡(luò)結(jié)構(gòu);再次進(jìn)行了2次激活函數(shù)為Relu的全連接層和1次回歸函數(shù)為Softmax的全連接層,實驗最后總的訓(xùn)練參數(shù)為63744。

改進(jìn)的模型以MNIST數(shù)據(jù)集的60000個訓(xùn)練集和10000個測試集為基礎(chǔ),以acc(訓(xùn)練集準(zhǔn)確率)、val_acc(測試集準(zhǔn)確率)、loss(訓(xùn)練集損失率)、val-loss(測試集損失率)為評估參數(shù),對傳統(tǒng)的卷積網(wǎng)絡(luò)結(jié)構(gòu)和改進(jìn)的卷積網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行仿真實驗。實驗中數(shù)據(jù)訓(xùn)練的迭代次數(shù)epoch為50次,每次的樣本數(shù)量batch_size為256,圖6和圖7分別為傳統(tǒng)的和改進(jìn)的acc和val acc的結(jié)果。由于傳統(tǒng)的acc都未超過98%,因此圖6只顯示出了val_acc的值。傳統(tǒng)的最終的val_acc值為99.25%,改進(jìn)的最終val_acc值為99. 54%;傳統(tǒng)的結(jié)構(gòu)在迭代20次以后val acc的值才超過了99.1%,而改進(jìn)模型在迭代9次以后val_acc的值就全部超過了99. 1%;因此采用改進(jìn)后的卷積網(wǎng)絡(luò)結(jié)構(gòu)收斂要快于改進(jìn)前的速度,測試集的準(zhǔn)確率要高于改進(jìn)前的準(zhǔn)確率。

圖8和圖9分別為傳統(tǒng)和改進(jìn)的loss和valloss的結(jié)果。傳統(tǒng)的val_loss都高于2%,改進(jìn)模型中迭代30次以后的val_loss值都低于2%,最終

表3為改進(jìn)前和改進(jìn)后結(jié)構(gòu)實驗中val_acc和val_loss的數(shù)據(jù),以迭代10次、20次、30次、40次和50次的樣本數(shù)據(jù)為例。從表3中可以看出,經(jīng)過50次的迭代,采用卷積網(wǎng)絡(luò)結(jié)構(gòu)比改進(jìn)前卷積網(wǎng)絡(luò)結(jié)構(gòu)的val_acc提高了0.29%、val loss降低了0. 77%。且在迭代第10次時,改進(jìn)后比改進(jìn)前的val_acc提升了0.29%,val loss降低了0.8%,說明采用改進(jìn)的結(jié)構(gòu)收斂速度要快于改進(jìn)前的收斂速度。

4結(jié)論

基于Keras框架,對卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)進(jìn)行改進(jìn),以MNIST數(shù)據(jù)集為基礎(chǔ)進(jìn)行仿真實驗。實驗結(jié)果表明:改進(jìn)的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)與改進(jìn)前相比較,提高了訓(xùn)練集和測試集上的準(zhǔn)確率,最終在測試集上的準(zhǔn)確率為99. 54%;降低了訓(xùn)練集和測試集上的損失率,最終在測試集上的損失率為1.62%;且收斂速度快,訓(xùn)練參數(shù)也少于改進(jìn)前的訓(xùn)練參數(shù),對手寫數(shù)字識別的研究有重要意義。后續(xù)需要繼續(xù)研究結(jié)構(gòu)和算法的改進(jìn),進(jìn)一步提升測試集的準(zhǔn)確率。

猜你喜歡
卷積神經(jīng)網(wǎng)絡(luò)
基于深度神經(jīng)網(wǎng)絡(luò)的微表情識別
卷積神經(jīng)網(wǎng)絡(luò)中減少訓(xùn)練樣本時間方法研究
卷積神經(jīng)網(wǎng)絡(luò)語言模型研究
基于卷積神經(jīng)網(wǎng)絡(luò)的車輛檢索方法研究
基于卷積神經(jīng)網(wǎng)絡(luò)溫室智能大棚監(jiān)控系統(tǒng)的研究
基于深度卷積神經(jīng)網(wǎng)絡(luò)的物體識別算法
深度學(xué)習(xí)算法應(yīng)用于巖石圖像處理的可行性研究
基于深度卷積網(wǎng)絡(luò)的人臉年齡分析算法與實現(xiàn)
深度學(xué)習(xí)技術(shù)下的中文微博情感的分析與研究
基于卷積神經(jīng)網(wǎng)絡(luò)的樹葉識別的算法的研究