999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于LVQ神經網絡的手寫數字識別研究與實現*

2018-07-26 09:48:44葉曉波秦海菲呂永林
楚雄師范學院學報 2018年3期

葉曉波,秦海菲,呂永林

(1.楚雄師范學院網絡與信息系統研究所,云南 楚雄 675000;2.楚雄師范學院信息科學與技術學院,云南 楚雄 675000;3.楚雄師范學院 經濟與管理學院,云南 楚雄 675000)

1.引言

模式識別是一門以應用為基礎的學科,目的是將對象進行分類[1]。任何可測量的對象都可進行分類,這些對象可以是圖像、音頻等;根據待分類數據是否全部都有已知類別標簽,模式識別可分為有監督模式識別(分類標簽完整)、無監督模式識別(無分類標簽)和半監督模式識別(分類標簽不完整)[1]。

手寫數字識別研究的對象是如何利用計算機自動識別人手寫在紙張上的阿拉伯數字[2],也就是將手寫數字進行分類。雖然數字的類別只有十種,但由于數字字形相差不大,同一數字的寫法變化多樣,給手寫數字的準確識別帶來了諸多挑戰[3],本文提出基于LVQ神經網絡的手寫數字識別方法,神經網絡訓練和測試樣本數據來自MNIST,實驗證明,該方法能有效快速地對手寫數字進行識別。

2. LVQ神經網絡

模式識別的研究過程中經常使用神經網絡對數據進行分類,其中,單層感知器是能一致逼近線性連續函數空間最簡單的神經網絡,但是它對非線性樣本空間不可分;BP神經網絡應用最為廣泛,但BP神經網絡的缺點在于采用了基于梯度下降的非線性迭代算法,在求解的過程中有可能陷入局部最小問題,從而不能保證求出全局最小值[4]。LVQ神經網絡的優點是不需要將輸入向量進行歸一化、正交化,只需要直接計算輸入向量與競爭層之間的距離,從而實現分類。

LVQ神經網絡又稱為學習矢量量化神經網絡(Learning Vector Quantization),它是在有教師狀態(分類標簽完整)下對競爭層進行訓練的一種學習算法,廣泛應用于模式識別和優化領域[5]。LVQ神經網絡屬于有監督模式識別,其基本構架和其他神經網絡基本相同,即LVQ神經網絡也是由三層神經元組成,即輸入層、隱含層和輸出層,LVQ神經網絡結構如圖1所示。

圖1 LVQ神經網絡結構圖[5]

LVQ神經網絡算法步驟如下[5]:

1)網絡初始化:對輸入層、隱含層權值、學習率η(η>0)進行初始化。

2)輸入向量:將X=(x1,x2,x3, ……,xn)T送入到輸入層。

4)選擇獲勝神經元:根據算法步驟3)計算結果選擇獲勝神經元,即距離最小的神經元作為獲勝神經元。

5)更新連接權值:如果分類正確(獲勝神經元和已知的分類一致),權值按△wij=wij+η(xi-wij)進行更新;如果分類錯誤,權值按△wij=wij-η(xi-wij)進行更新。

6)判斷是否迭代:如果計算結果達到指定訓練目標或迭代次數達到指定最大迭代次數,訓練結束,否則返回算法步驟2),進入下一輪學習。

根據以上算法步驟,LVQ神經網絡的算法模型如圖2所示:

圖2 LVQ神經網絡算法模型圖

其中:

(1)

a1=compet(n1)

(2)

a2=purelin(LW2,1?1)

(3)

R是輸入向量,S1是競爭神經元,S2是線性層(隱含層)神經元。

3.實驗研究

本實驗軟件環境為:Windows Server 2008 R2(64位);硬件環境為:Intel(R) Xeon(R) CPU E5-2660 v2 @2.20GHz(8處理器),8G內存;實驗程序設計均在Matlab 2016b下完成,以下是整個實驗過程。

3.1實驗數據詳情

本實驗采用MNIST手寫數字數據庫(http://yann.lecun.com/exdb/mnist/)。MNIST手寫數字數據庫共包含60000個訓練樣本數據,10000個測試樣本數據,每一個樣本數據(圖片)都是標準化的,即圖片大小相同,圖片上的手寫數字居中,MNIST手寫數字數據庫被研究者廣泛用作測試模式識別方法的基準,也被學生用于模式識別、機器學習和統計方面的課堂項目。

MNIST手寫數字數據庫包含4個數據文件,每一個文件的名稱及文件包含內容如表1所示。

表1 MNIST手寫數字數據庫文件名及文件內容

MNIST手寫數字數據庫的訓練樣本數據文件和測試樣本數據文件的數據結構完全相同,圖3是訓練樣本數據文件的數據結構圖。

圖3 訓練樣本數據文件的數據結構圖

分析訓練樣本數據文件的數據結構可知:文件的第二個32位整數指明文件所包含的手寫數字圖片數量(訓練樣本數據文件包含60000個樣本數據,測試樣本數據文件包含10000個樣本數據),第三、四個32位整數指明了每一張手寫數字圖片的行和列的像素大小,即手寫數字圖片大小是28*28像素。

MNIST手寫數字數據庫的訓練樣本標簽數據文件和測試樣本標簽數據文件的數據結構完全相同,圖4是訓練樣本標簽數據文件的數據結構圖。

圖4 訓練樣本標簽數據文件的數據結構圖

分析訓練樣本標簽數據文件的數據結構可知:文件的第二個32位整數指明文件所包含的標簽數量(訓練樣本標簽數據文件包含60000個標簽,測試樣本標簽數據文件包含10000個標簽),標簽數據的值是0―9之間的數字,與樣本數據文件中的圖片一一對應,即樣本數據文件中的第一幅圖片(手寫數字)對應的正確數字是標簽數據文件中的第一個標簽值。

圖5是部分訓練樣本數據中的手寫數字圖片。

圖5 部分訓練樣本數據中的手寫數字圖片

3.2實驗思路及方法

3.2.1實驗數據讀取方法

根據MNIST手寫數字數據庫文件的數據結構,在Matlab中使用fopen函數打開數據庫文件,使用fread函數讀取數據。以下語句是打開并讀取MNIST手寫數字數據庫訓練樣本數據文件的代碼:

f_train_img = fopen('database rain-images.idx3-ubyte','r','b');

magic_num = fread(f_train_img,1,'int32'); %Magic num,32位整數

train_img_num = fread(f_train_img,1,'int32'); %圖片數量,32位整數

row_size = fread(f_train_img,1,'int32'); %圖片的行像素值,32位整數

col_size = fread(f_train_img,1,'int32'); %圖片的列像素值,32位整數

train_img=zeros(784,train_img_num); %初始化訓練樣本矩陣,

圖片大?。簉ow_size* col_size=784

for i=1: train_img_num %循環讀取訓練樣本數據文件中手寫數字圖片數據

train_img(:,i)=uint8(fread(f_train_img,784,'uchar'));

end

與訓練樣本數據相對應的是訓練樣本標簽數據,標簽(類別)共有十類,分別從0―9,但LVQ神經網絡確認獲勝神經元是提取每一列中值為1的行號,而行號最小的是1,因此,在讀取樣本數據標簽時應該把類別標簽由0―9依次更改為1―10,也就是把類別標簽全部都加1。以下語句是讀取MNIST手寫數字數據庫訓練樣本標簽數據的代碼:

for i=1:train_index_num %循環讀取訓練樣本數據對應的真實數字值

train_index(:,i)=uint8(fread(f_train_index,1,'uchar'))+1;

end

3.2.2 PCA降維

MNIST手寫數字數據庫共有訓練用的手寫數字圖片60000幅,測試用的手寫數字圖片10000幅,每一幅圖片大小都是28*28=784像素,用于神經網絡訓練的樣本矩陣大小是784*600000,用于測試的樣本矩陣大小是784*10000;這樣大小的矩陣在神經網絡的訓練、測試過程中會增加運算的復雜度和運行時間,在這種情況下,一般需要進行數據降維處理。

所謂數據降維是指通過線性或非線性映射將樣本從高維空間映射到低維空間,從而獲得高維數據的一個有意義的低維表示的過程[6]。降維后的數據容易處理、更容易使用,還可去除數據噪聲,進而降低算法開銷。常見的降維算法有主成分分析(也稱PCA降維,principal component analysis)、因子分析(Factor Analysis)和獨立成分分析ICA(Independent Component Analysis),其中PCA降維是目前應用最為廣泛的降維方法。

PCA降維是通過對原始變量的相關矩陣或協方差矩陣內部結構的研究,將多個變量轉換為少數幾個綜合變量(即主成分),從而達到降維目的的一種線性降維方法[6]。這些主成分能夠反映原始變量的絕大部分信息,它們通常表示為原始變量的線性組合,通過PCA降維可實現用較少的數據維度代替較多的原數據點。在本實驗中使用Matlab提供的pca函數對訓練樣本數據進行降維,測試樣本數據使用訓練樣本的降維矩陣進行降維處理;用pca函數生成的降維數據中,根據特征值的累積貢獻率不同可生成不同的降維矩陣,累積貢獻率是指降維后能保持原有數據的真實率,因此,貢獻率越大(越接近100%),則降維后的數據越能更真實的反映原始數據,但貢獻率越大,則數據維度減少的就越少,從而帶來降維效果不明顯的問題;貢獻率越小,則數據維度減少的就越多,降維效果非常明顯,但降維后的數據與原始數據偏離會明顯加大。

本實驗依次選擇PCA降維貢獻率大于等于0.95、0.96、0.97、0.98所對應的降維矩陣對訓練樣本和測試樣本數據進行降維處理。

3.2.3 LVQ神經網絡參數的選擇

Matlab使用lvqnet 函數創建LVQ神經網絡,語法:net = lvqnet(S1,LR,LF),參數S1是指隱含層神經元數量,參數LR是指神經網絡學習速率,默認值是0.01,參數LF是指神經網絡學習函數,默認學習函數是learnlv1。

(1)隱含層單元數的確定

在神經網絡應用過程中,神經元數目太少,神經網絡權值無法獲取更多有用的信息,從而無法實現較高的分類正確率;若神經元數目太多,則會增加訓練時間,且分類正確率未必會隨神經元數目的增加而增加,因此合理選擇神經元數目非常重要。

對于神經網絡訓練過程中神經元數目的選擇,許多研究人員進行了廣泛研究,提出了多種確定神經元數目的參考公式,根據Kolmogorov[7]定理可知,針對只有3層神經元的人工神經網絡,給出了輸入層神經元數目Nin與隱層神經元數目Nhid之間的等量關系[8]:

Nhid=2Nin+1

(4)

其中Nin為輸入單元數,Nhid為隱含層單元數。本實驗選擇不同的PCA降維貢獻率,將得到不同的輸入單元數,因此,具體的隱含層神經元數目要根據PCA降維結果進行計算確定。

(2)學習速率的確定

在神經網絡學習過程中,較大的學習速率可讓神經網絡學習快速接近訓練目標,但隨后會造成神經網絡學習在訓練目標附近振蕩而不會收斂;較小的學習速率會帶來神經網絡學習速度慢的問題;在本實驗中,考慮到學習數據龐大,不宜選擇較小的學習速率,經過反復研究,本實驗選擇0.05作為學習速率。

(3)學習函數的確定

神經網絡可選擇不同的函數來逼近最優解,LVQ神經網絡提供了兩個學習函數,分別是learnlv1和learnlv2,如果在初始化神經網絡時不指定學習函數,則默認使用learnlv1作為學習函數,本實驗選擇learnlv1作為LVQ神經網絡學習函數。

3.2.4實驗程序設計

本實驗程序設計步驟描述如下:

%=====讀取訓練樣本數據=====%

1)f_train_img = fopen('database rain-images.idx3-ubyte','r','b'); %打開訓練樣本數據集文件

2)讀取圖片數量(train_img_num)等數據,初始化訓練樣本矩陣train_img

3)for i=1: train_img_num %循環讀取訓練樣本數據文件中手寫數字圖片數據

4)train_img (:,i)=uint8(fread(f_train_img,784,'uchar'));

5)End

%=====根據訓練樣本數據生成降維矩陣=====%

6)[pc,score,latent,tsquare] = pca(train_img); %獲取PCA降維數據

7)根據PCA函數運行結果,計算累計貢獻率,選擇貢獻率大于等于95%、96%、97%、98%、99%的特征值對應的特征向量,生成降維矩陣pca_matrix

8)用降維矩陣為訓練樣本數據進行降維處理,得到降維結果after_pca_train

%=====讀取訓練樣本數據標簽值=====%

9)f_train_index=fopen('database rain-labels.idx1-ubyte','r','b'); %打開訓練樣本標簽數據文件

10)讀取標簽數量(train_index_num)等數據,初始化訓練樣本標簽矩陣train_index

11)for i=1: train_index_num %循環讀取訓練樣本數據對應的真實數字值

12)train_index(1,i)=uint8(fread(f_train_index,1,'uchar'))+1;

13)end

%=====讀取測試樣本數據=====%

14)f_test_img=fopen('database 10k-images.idx3-ubyte','r','b'); %打開測試樣本數據集文件

15)讀取圖片數量(test_img_num)等數據,初始化測試樣本矩陣test_img

16)for i=1: test_img_num %循環讀取測試樣本文件中的相應數據

17)test_img(1,i)=uint8(fread(f_test_img,784,'uchar'));

18)end

19)用降維矩陣為測試樣本數據進行降維處理,得到降維結果after_pca_test

%=====讀取測試樣本數據標簽值=====%

20)f_test_index=fopen('database 10k-labels.idx1-ubyte','r','b'); %打開測試樣本標簽數據文件

21)讀取標簽數量(test_index_num)等數據,初始化測試樣本標簽矩陣test_index

22)for i=1: test_index_num %循環讀取測試樣本數據對應的真實數字值

23)test_index(:,i)=uint8(fread(f_test_index,1,'uchar'))+1;

24)end

25)T=ind2vec(train_index);

%=====創建、初始化、訓練網絡=====%

26)net=lvqnet(隱含層神經元數量,0.05); %創建LVQ神經網絡

27)net=init(net); %初始化LVQ神經網絡

28)net.trainparam.epochs=50; % 指定最大訓練次數

29)net.trainParam.goal=0.01; % 指定訓練目標最小誤差

30)net=train(net,after_pca_train,T);%訓練網絡

%=====網絡仿真結果=====%

31)train_result =vec2ind(net(after_pca_train'));%用訓練數據進行仿真

32)sum(train_result==train_index)/train_index_num %計算訓練樣本數據的分類正確率

33)test_result=vec2ind(net(after_pca_test')); %用測試樣本數據仿真

34)sum(test_result==test_index)/test_index_num %計算測試樣本數據的分類正確率

3.2.5 實驗結果及分析

圖6是LVQ神經網絡訓練圖,參數指定為:PCA降維累積貢獻率>=0.95,神經網絡輸入單元數154,隱含層神經元數量309,迭代次數:50。

圖6 LVQ神經網絡訓練圖

表2 是按PCA降維累積貢獻率不同而進行的實驗結果統計表:

表2 基于LVQ神經網絡的手寫數字識別實驗結果

其中:LVQ神經網絡隱含層神經元數量根據公式(4)計算得出,神經網絡學習速率:0.05,迭代次數:50。

圖7是PCA降維累積貢獻率>=0.95時訓練的均方誤差圖:

圖7 神經網絡訓練結果的均方誤差圖

分析實驗結果可得:(1)LVQ神經網絡對MNIST手寫數字數據庫的識別率在指定相應參數時(見表2),識別準確率大于93%,是一個較理想的識別效果。(2)隨著指定的PCA降維累積貢獻率的提高,輸入單元數也大幅度增多,但訓練樣本與測試樣本數據的識別率并未因輸入單元數的增加而明顯提高。(3)LVQ神經網絡的訓練時間隨輸入單元數的增加而大幅提高。

通過實驗結果還可得出PCA降維累積貢獻率選擇的方法:在進行神經網絡訓練時,如果原始數據維度較高,應該進行PCA降維處理,選擇一個合適的PCA降維累積貢獻率非常重要,本實驗選擇累積貢獻率為0.95時效果較好,不但學習訓練速度快,而且可取得滿意的分類結果。

4.結語

手寫數字識別不但在實際生活中有著廣泛的應用,也是模式識別重點研究的領域之一,目前研究人員運用多種識別方法對手寫數字識別開展了廣泛的實驗研究,本文提出基于LVQ神經網絡手寫數字識別的方法,采用最廣泛的手寫數字識別數據庫MNIST進行了實驗研究,實驗結果對手寫數字識別方面的研究有較好的參考價值。

主站蜘蛛池模板: 中文字幕欧美日韩高清| 国产精品手机在线观看你懂的| 欧美色亚洲| 国产成人精品一区二区| 97se亚洲综合不卡 | 亚洲第一视频网| 精品综合久久久久久97| 一本色道久久88| 国产一区三区二区中文在线| 国产福利不卡视频| 91高清在线视频| 精品91自产拍在线| 日韩在线影院| 香蕉蕉亚亚洲aav综合| 午夜少妇精品视频小电影| 免费国产无遮挡又黄又爽| 亚洲IV视频免费在线光看| 最新日本中文字幕| 亚洲天堂视频在线播放| www.91在线播放| 亚洲综合在线网| 亚洲第七页| 国产精品对白刺激| 国产成人精品男人的天堂| 伊人久久婷婷五月综合97色| 丰满的少妇人妻无码区| 欧美成人怡春院在线激情| 在线观看亚洲成人| 美女亚洲一区| 国产欧美一区二区三区视频在线观看| 婷婷色一区二区三区| 狠狠色婷婷丁香综合久久韩国| 午夜毛片免费观看视频 | 在线亚洲小视频| 国产精品自拍合集| 97se亚洲综合不卡| 久久人与动人物A级毛片| 亚洲日本一本dvd高清| 国产网友愉拍精品| 久久一日本道色综合久久| 精品国产免费人成在线观看| 国产高潮流白浆视频| 国产熟女一级毛片| 97国产精品视频自在拍| 亚洲日韩精品无码专区| 天堂亚洲网| 国产天天色| 国产在线自乱拍播放| 无码区日韩专区免费系列 | 高清久久精品亚洲日韩Av| 全午夜免费一级毛片| 日韩123欧美字幕| 国产成人精品2021欧美日韩 | 国产综合另类小说色区色噜噜| 无码久看视频| 久久成人免费| 国产成人精品亚洲77美色| 亚洲AV无码不卡无码| 国产日本欧美在线观看| 国产专区综合另类日韩一区| 成人在线观看一区| 在线日本国产成人免费的| 伊人五月丁香综合AⅤ| 欧美国产日韩另类| 国产日产欧美精品| 午夜高清国产拍精品| 夜夜操国产| 久热中文字幕在线| 日韩大乳视频中文字幕| 夜夜操天天摸| 国产精品免费p区| 丁香五月激情图片| 五月婷婷中文字幕| 3344在线观看无码| 丁香五月激情图片| 手机精品视频在线观看免费| 国产一区二区网站| 亚洲成人www| 无码精品福利一区二区三区| 久草青青在线视频| 71pao成人国产永久免费视频| 波多野结衣AV无码久久一区|