版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 本科畢業(yè)論文(設計)</p><p><b> ?。ǘ?屆)</b></p><p> 基于BP神經(jīng)網(wǎng)絡的數(shù)字字母識別系統(tǒng)設計——系統(tǒng)的MATLAB實現(xiàn)</p><p> 所在學院 </p><p> 專業(yè)班級 電氣工程及其
2、自動化 </p><p> 學生姓名 學號 </p><p> 指導教師 職稱 </p><p> 完成日期 年 月 </p><p><b> 摘 要</b></p&g
3、t;<p> 本課題利用MATLAB將應用于數(shù)字識別的BP神經(jīng)網(wǎng)絡結構程序化,并進行仿真實驗,考察網(wǎng)絡結構對系統(tǒng)實時性、識別效果的影響以及初始權值對收斂速度的影響, 選取最佳的隱層節(jié)點數(shù)和權值初始化函數(shù), 實現(xiàn)了基于BP 神經(jīng)網(wǎng)絡的數(shù)字識別系統(tǒng)。實驗結果表明該系統(tǒng)能夠?qū)崿F(xiàn)對數(shù)字的有效識別</p><p> 關鍵詞: 數(shù)字識別,BP神經(jīng)網(wǎng)絡,MATLAB仿真</p><p>
4、;<b> Abstract</b></p><p> In this paper,MATLAB is used to program the BP neural network structure which is applied to digit recognition and conduct simulation experiment. For fulfilling the rea
5、l time and veracity demands of digit recognition,the structure of neural networks is researched. The influence of initial weights on convergent speed is also considered. Select the best hidden layer node number and weigh
6、t initialization function, realized the digit recognition system based on BP neural network. Experimental results</p><p> Key Words: digit recognition,BP neural network,MATLAB simulation
7、 </p><p><b> 目 錄</b></p><p> 1 引言..............................................................1</p><p> 2 神經(jīng)網(wǎng)絡.................................................
8、.........2</p><p> 2.1人工神經(jīng)元......................................................2</p><p> 2.2人工神經(jīng)網(wǎng)絡....................................................2</p><p> 2.2.1人工神經(jīng)網(wǎng)絡的定...
9、..........................................2</p><p> 2.2.2人工神經(jīng)網(wǎng)絡的工作原理.......................................2</p><p> 2.2.3人工神經(jīng)網(wǎng)絡的特征...........................................3</p><p
10、> 2.2.4幾種典型的神經(jīng)網(wǎng)絡簡介.......................................4</p><p> 2.2.5人工神經(jīng)網(wǎng)絡的發(fā)展前景.......................................4</p><p> 3 BP神經(jīng)網(wǎng)絡................................................
11、........5</p><p> 3.1 BP神經(jīng)網(wǎng)絡概述.................................................5</p><p> 3.2 BP算法.........................................................5</p><p> 3.2.1 BP算法的學習方
12、式............................................5</p><p> 3.2.2 BP算法的主要思想............................................5</p><p> 3.2.3 BP算法的組成................................................6</p
13、><p> 3.2.4 BP算法的不足及解決辦法......................................7</p><p> 3.3 BP算法在數(shù)字識別中的應用.......................................8</p><p> 4 軟件開發(fā)環(huán)境和平臺...............................
14、...............10</p><p> 4.1 MATLAB概述....................................................10</p><p> 4.2 MATLAB語言特點................................................10</p><p> 4.3
15、MATLAB中的神經(jīng)網(wǎng)絡工具箱......................................10</p><p> 5 神經(jīng)網(wǎng)絡設計和MATLAB編程.......................................11</p><p> 5.1神經(jīng)網(wǎng)絡的設計.................................................1
16、1</p><p> 5.1.1系統(tǒng)輸入信號的提取與表示....................................11</p><p> 5.1.2系統(tǒng)輸出信號的表示..........................................12</p><p> 5.1.3 網(wǎng)絡拓撲結構的建立......................
17、...................13</p><p> 5.2 數(shù)字識別系統(tǒng)的MATLAB語言編程.................................14</p><p> 5.2.1數(shù)字識別系統(tǒng)MATLAB編程流程圖...............................14</p><p> 5.2.2程序的初始化........
18、........................................15</p><p> 5.2.3 網(wǎng)絡訓練...................................................15</p><p> 5.2.4系統(tǒng)性能....................................................16</p
19、><p> 5.2.5 生成輸入向量矩陣和輸出向量方陣的MATLAB函數(shù)文件............18</p><p> 5.2.6 繪制數(shù)字字符圖像的MATLAB函數(shù)文件..........................19</p><p> 5.2.7 數(shù)字字符識別測試仿真程序...................................19<
20、;/p><p> 6 結論.............................................................21</p><p> 致謝...............................................................22</p><p> 參考文獻................
21、...........................................23</p><p><b> 1引言</b></p><p> 數(shù)字識別是字符識別中的一個特例,是圖像處理技術和模式識別技術相結合的研究課題。隨著國家信息化進程的加速,數(shù)字識別的應用越來越廣泛,如郵政編碼的自動識別、銀行稅表和銀行支票的自動處理以及大規(guī)模的統(tǒng)計數(shù)據(jù)庫的數(shù)據(jù)自動識
22、別輸人等。 當這些領域涉及到數(shù)字識別時,特別是有關金額數(shù)額的識別時, 要求識別器具有很高的可靠性。針對這類問題的關鍵就是設計出高可靠性和高識別率的數(shù)字識別方法。 人工神經(jīng)網(wǎng)絡技術源于人腦神經(jīng)系統(tǒng)的模型 ,是模擬人工智能的一種重要方法 ,具有模擬人的部分形象思維的能力。人工神經(jīng)網(wǎng)絡技術的迅速發(fā)展 ,為模式識別開辟了新的途徑。誤差反向傳播(Back-Propagation) ,即 BP神經(jīng)網(wǎng)絡 ,就是一種典型的人工神經(jīng)網(wǎng)絡 , 它具有信息并
23、行分布式處理能力和自學習功能等顯著優(yōu)點,有著廣泛的應用。本文在對 BP神經(jīng)網(wǎng)絡基本原理研究的基礎上 ,結合這一課題 , 利用 BP神經(jīng)網(wǎng)絡來實現(xiàn)數(shù)字的識別。 再利用MATLAB中神經(jīng)網(wǎng)絡的工具箱編制程序,把數(shù)字識別系統(tǒng)的BP神經(jīng)網(wǎng)絡結構模型變?yōu)槌绦蚰P?。MATLAB仿真表明,BP神經(jīng)網(wǎng)絡識別數(shù)字具有良好的效果。</p><p><b> 2 神經(jīng)網(wǎng)絡</b></p><
24、p><b> 2.1 人工神經(jīng)元</b></p><p> 人工神經(jīng)元模擬了大腦的簡單特性。人工神經(jīng)元是神經(jīng)網(wǎng)絡最基本的組成,一般是多輸入、單輸出的非線性器件[1]。人工神經(jīng)元模型如圖2-1。.</p><p> 圖2-1 神經(jīng)元模型結構</p><p><b> 2.2人工神經(jīng)網(wǎng)絡</b></p&g
25、t;<p> 2.2.1人工神經(jīng)網(wǎng)絡的定義</p><p> 人工神經(jīng)網(wǎng)絡是一種模范動物神經(jīng)網(wǎng)絡行為特征,進行分布式并行信息處理的算法數(shù)學模型。這種網(wǎng)絡依靠系統(tǒng)的復雜程度,通過調(diào)整內(nèi)部大量節(jié)點之間相互連接的關系,從而達到處理信息的目的[2]。</p><p> 2.2.2人工神經(jīng)網(wǎng)絡的工作原理</p><p> 人工神經(jīng)網(wǎng)絡具有自學習和自適應的
26、能力,可以通過預先提供的一批相互對應的輸入-輸出數(shù)據(jù),分析掌握兩者之間潛在的規(guī)律,最終根據(jù)這些規(guī)律,用新的輸入數(shù)據(jù)來推算輸出結果,這種學習分析的過程被稱為“訓練人工神經(jīng)網(wǎng)絡的工作原理[3]。</p><p> 人工神經(jīng)網(wǎng)絡首先要以一定的學習準則進行學習,然后才能工作?,F(xiàn)以人工神經(jīng)網(wǎng)絡對手寫“A”、“B”兩個字母的識別為例進行說明,規(guī)定當“A”輸入網(wǎng)絡時,應該輸出“1”,而當輸入為“B”時,輸出為“0”。
27、0; 所以網(wǎng)絡學習的準則應該是:如果網(wǎng)絡作出錯誤的的判決,則通過網(wǎng)絡的學習,應使得網(wǎng)絡減少下次犯同樣錯誤的可能性。首先,給網(wǎng)絡的各連接權值賦予(0,1)區(qū)間內(nèi)的隨機值,將“A”所對應的圖象模式輸入給網(wǎng)絡,網(wǎng)絡將輸入模式加權求和、與門限比較、再進行非線性運算,得到網(wǎng)絡的輸出。在此情況下,網(wǎng)絡輸出為“1”和“0”的概率各為50%,也就是說是完全隨機的。這時如果輸出為“1”(結果正確),則使連接權值增大,以便使網(wǎng)絡再次遇到“A”模式輸入時,仍
28、然能作出正確的判斷。</p><p> 如果輸出為“0”(即結果錯誤),則把網(wǎng)絡連接權值朝著減小綜合輸入加權值的方向調(diào)整,其目的在于使網(wǎng)絡下次再遇到“A”模式輸入時,減小犯同樣錯誤的可能性。如此操作調(diào)整,當給網(wǎng)絡輪番輸入若干個手寫字母“A”、“B”后,經(jīng)過網(wǎng)絡按以上學習方法進行若干次學習后,網(wǎng)絡判斷的正確率將大大提高。這說明網(wǎng)絡對這兩個模式的學習已經(jīng)獲得了成功,它已將這兩個模式分布地記憶在網(wǎng)絡的各個連接權值上。
29、當網(wǎng)絡再次遇到其中任何一個模式時,能夠作出迅速、準確的判斷和識別。一般說來,網(wǎng)絡中所含的神經(jīng)元個數(shù)越多,則它能記憶、識別的模式也就越多[4]。</p><p> 2.2.3人工神經(jīng)網(wǎng)絡的基本特征</p><p> (1)非線性 非線性關系是自然界的普遍特性。大腦的智慧就是一種非線性現(xiàn)象。人工神經(jīng)元處于激活或抑制二種不同的狀態(tài),這種行為在數(shù)學上表現(xiàn)為一種非線性關系。具有閾值的神經(jīng)元構成的
30、網(wǎng)絡具有更好的性能,可以提高容錯性和存儲容量。</p><p> (2)非局限性 一個神經(jīng)網(wǎng)絡通常由多個神經(jīng)元廣泛連接而成。一個系統(tǒng)的整體行為不僅取決于單個神經(jīng)元的特征,而且可能主要由單元之間的相互作用、相互連接所決定。通過單元之間的大量連接模擬大腦的非局限性。聯(lián)想記憶是非局限性的典型例子。</p><p> (3)非常定性 人工神經(jīng)網(wǎng)絡具有自適應、自組織、自學習能力。神經(jīng)網(wǎng)絡不但處理
31、的信息可以有各種變化,而且在處理信息的同時,非線性動力系統(tǒng)本身也在不斷變化。經(jīng)常采用迭代過程描寫動力系統(tǒng)的演化過程[5]。</p><p> (4)非凸性 一個系統(tǒng)的演化方向,在一定條件下將取決于某個特定的狀態(tài)函數(shù)。例如能量函數(shù),它的極值相應于系統(tǒng)比較穩(wěn)定的狀態(tài)。非凸性是指這種函數(shù)有多個極值,故系統(tǒng)具有多個較穩(wěn)定的平衡態(tài),這將導致系統(tǒng)演化的多樣性。</p><p> 2.2.4幾種典型
32、的神經(jīng)網(wǎng)絡簡介 </p><p> 神經(jīng)網(wǎng)絡模型各種各樣, 各式各樣的模型從不同的角度對生物神經(jīng)系統(tǒng)進行不同層次的描述和模擬。代表性的網(wǎng)絡模型有BP網(wǎng)絡、RBF網(wǎng)絡、H opfie ld網(wǎng)絡、自組織特征映射網(wǎng)絡等。運用這些網(wǎng)絡模型可實現(xiàn)函數(shù)逼近、數(shù)據(jù)聚類、模式分類、優(yōu)化計算等功能。因此, 神經(jīng)網(wǎng)絡廣泛應用于人工智能、自動控制、機器人、統(tǒng)計學等領域的信息處理中[6]。</p><p&
33、gt; 2.2.5人工神經(jīng)網(wǎng)絡的發(fā)展前景</p><p> 由于現(xiàn)代高性能計算機的研發(fā),人工神經(jīng)網(wǎng)絡的發(fā)展將在趨向于微觀器件同宏觀功能的結合, 并在智能化傳感器、隨機模式識別、實時知識處理、控制應用、最優(yōu)化問題等方面克服現(xiàn)時的理論和技術障礙, 從實驗室和專門應用逐步地滲入到實際生活和各類工作系統(tǒng)中去。我們可以想象到那時聲控電視、電話、計算機、打字機等將進入尋常百姓家; 人類可以直接同機器進行接口對話;具有思維
34、、語言、感情的智能機器人將替代我們?nèi)プ鲈S多繁瑣和人類自身不適合做的事情。</p><p><b> 3.BP神經(jīng)網(wǎng)絡</b></p><p> 3.1 BP神經(jīng)網(wǎng)絡概述</p><p> BP(Back Propagation)網(wǎng)絡是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆?zhèn)鞑ニ惴ㄓ柧毜亩鄬忧?/p>
35、饋網(wǎng)絡,是目前應用最廣泛的神經(jīng)網(wǎng)絡模型之一。BP網(wǎng)絡能學習和存貯大量的輸入-輸出模式映射關系,而無需事前揭示描述這種映射關系的數(shù)學方程[7]。</p><p><b> 3.2 BP算法</b></p><p> 3.2.1 BP算法的學習方式</p><p> 神經(jīng)網(wǎng)絡具有初步的自適應與自組織能力。在學習或訓練過程中改變突觸權重值,以適
36、應周圍環(huán)境的要求。同一網(wǎng)絡因?qū)W習方式及內(nèi)容不同可具有不同的功能。神經(jīng)網(wǎng)絡是一個具有學習能力的系統(tǒng),可以發(fā)展知識,以致超過設計者原有的知識水平。通常,它的學習訓練方式可分為兩種,一種是有監(jiān)督或稱有導師的學習,這時利用給定的樣本標準進行分類或模仿;另一種是無監(jiān)督學習或稱無導師學習,這時,只規(guī)定學習方式或某些規(guī)則,則具體的學習內(nèi)容隨系統(tǒng)所處環(huán)境 (即輸入信號情況)而異,系統(tǒng)可以自動發(fā)現(xiàn)環(huán)境特征和規(guī)律性,具有更近似人腦的功能。BP算法即誤差反向
37、傳播(Error Back Propagation, BP)算法。BP算法屬于δ算法, 是一種監(jiān)督式的學習算法[8]。</p><p> 3.2.2 BP算法的主要思想</p><p> BP算法的主要思想:輸入學習樣本,使用反向傳播算法對網(wǎng)絡的權值和偏差進行反復的調(diào)整訓練,使輸出的向量與期望向量盡可能地接近,當網(wǎng)絡輸出層的誤差平方和小于指定的誤差時訓練完成,保存網(wǎng)絡的權值和偏差。即對
38、于n個輸入學習樣本:X1,X2,……,Xn,已知與其對應的輸出樣本為:Y1,Y2,…….,Yn。使網(wǎng)絡輸出層的誤差平方和達到最小。用網(wǎng)絡的實際輸出A1,A2,……,An,與目標矢量T1,T2,…….,Tn之間的誤差修改其權值,使Am與期望的Tm(m=1,……,n)盡可能接近。</p><p> 3.2.3 BP算法的組成</p><p> BP算法由2部分組成,即信息的正向傳播和誤差的
39、反向傳播。</p><p> 輸入層各神經(jīng)元負責接收來自外界的輸入信息,并傳遞給中間層各神經(jīng)元;中間層是內(nèi)部信息處理層,負責信息變換,根據(jù)信息變化能力的需求,中間層可以設計為單隱層或者多隱層結構;最后一個隱層傳遞到輸出層各神經(jīng)元的信息,經(jīng)進一步處理后,完成一次學習的正向傳播處理過程,由輸出層向外界輸出信息處理結果[9]。</p><p> 當實際輸出與期望輸出不符時,進入誤差的反向傳播
40、階段。誤差通過輸出層,按誤差梯度下降的方式修正各層權值,向隱層、輸入層逐層反傳。周而復始的信息正向傳播和誤差反向傳播過程,是各層權值不斷調(diào)整的過程,也是神經(jīng)網(wǎng)絡學習訓練的過程,此過程一直進行到網(wǎng)絡輸出的誤差減少到可以接受的程度,或者預先設定。BP算法的網(wǎng)絡結構如圖3-1,流程如圖3-2。.</p><p> 圖3-1 BP算法的網(wǎng)絡結構示意圖</p><p><b> Y&
41、lt;/b></p><p><b> N</b></p><p><b> N</b></p><p><b> Y</b></p><p> 圖3-2 BP算法流程圖</p><p> 3.2.4 BP算法的不足及解決辦法</
42、p><p> 雖然BP網(wǎng)絡得到了廣泛的應用,但自身也存在一些缺陷和不足,主要包括以下幾個方面的問題。 </p><p> 首先,由于學習速率是固定的,因此網(wǎng)絡的收斂速度慢,需要較長的訓練時間。對于一些復雜問題,BP算法需要的訓練時間可能非常長,這主要是由于學習速率太小造成的,可采用變化的學習速率或自適應的學習速率加以改進。 </p><p> 其次,BP算法可以使
43、權值收斂到某個值,但并不保證其為誤差平面的全局最小值,這是因為采用梯度下降法可能產(chǎn)生一個局部最小值。對于這個問題,可以采用附加動量法來解決。 </p><p> 再次,網(wǎng)絡隱含層的層數(shù)和單元數(shù)的選擇尚無理論上的指導,一般是根據(jù)經(jīng)驗或者通過反復實驗確定。因此,網(wǎng)絡往往存在很大的冗余性,在一定程度上也增加了網(wǎng)絡學習的負擔。 </p><p> 最后,網(wǎng)絡的學習和記憶具有不穩(wěn)定性。也就是說,
44、如果增加了學習樣本,訓練好的網(wǎng)絡就需要從頭開始訓練,對于以前的權值和閾值是沒有記憶的[10]。</p><p> 3.3 BP算法在數(shù)字識別中的應用</p><p> BP算法在數(shù)字識別中的應用如圖3-3。.</p><p> 圖 3-3 BP算法在數(shù)字識別中的應用</p><p> 數(shù)字識別還有一個前提工作,即將視覺圖像轉(zhuǎn)化為可
45、由計算機處理的二值圖像,即用給定閾值法把圖像中的像素根據(jù)一定標準化為兩種顏色。但二值化的圖像在很多情況下字體模糊,或出現(xiàn)雜亂散布的白點或黑點,給識別造成一定的困難,可采用梯度銳化的方法對圖像進行銳化,使模糊的圖像變的清晰,同時可以對噪聲起到一定的去除作用。</p><p> 由于識別時只能根據(jù)每個數(shù)字字符的特征進行判斷,所以對銳化后的二值圖像還需分割成單個的字符,對字符進行細化。常用的脫殼算法,即從字符的邊界逐
46、層移去黑點,直到尋找到一個集合,此集合與其邊界相重合(即厚度為1或2)。為了對任意字符的特征提取,還需要對數(shù)字字符進行規(guī)范化處理,即把字符的尺寸變換成統(tǒng)一大小,字符位置(旋轉(zhuǎn)、平移)糾正。從被分割處理完畢的字符中,提取最能體現(xiàn)這個字符特點的特征向量,代入BP網(wǎng)絡之中,對網(wǎng)絡進行訓練。然后提取出待識別的的樣本中的特征向量代入到訓練好的BP網(wǎng)絡中,就可以對字符進行識別。常用的特征向量的提取方法有逐像素提取法、骨架特征提取法、垂直方向數(shù)據(jù)統(tǒng)計
47、提取法等[11]。</p><p> 4 軟件開發(fā)環(huán)境和平臺</p><p> 4.1 MATLAB概述</p><p> MATLAB是由美國mathworks公司發(fā)布的主要面對科學計算、可視化以及交互式程序設計的高科技計算環(huán)境。它將數(shù)值分析、矩陣計算、科學數(shù)據(jù)可視化以及非線性動態(tài)系統(tǒng)的建模和仿真等諸多強大功能集成在一個易于使用的視窗環(huán)境中,為科學研究、工
48、程設計以及必須進行有效數(shù)值計算的眾多科學領域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設計語言(如C、Fortran)的編輯模式,代表了當今國際科學計算軟件的先進水平。MATLAB可以進行矩陣運算、繪制函數(shù)和數(shù)據(jù)、實現(xiàn)算法、創(chuàng)建用戶界面、連接其他編程語言的程序等,主要應用于工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。</p><p> 4.2 MATLA
49、B語言特點</p><p> 新版本MATLAB語言是基于最為流行的C++語言基礎上的,因此語法特征與C++語言極為相似,而且更加簡單,更加符合科技人員對數(shù)學表達式的書寫格式用戶可以在命令窗口中將輸入語句與執(zhí)行命令同步,也可以先編寫好一個較大的復雜的應用程序(M文件)后再一起運行。使之更利于非計算機專業(yè)的科技人員使用。而且這種語言可移植性好、可拓展性極強。</p><p> 4.3 M
50、ATLAB中的神經(jīng)網(wǎng)絡工具箱</p><p> MATLAB軟件中包含MATLAB神經(jīng)網(wǎng)絡工具箱,工具箱以人工神經(jīng)網(wǎng)絡為基礎,只要根據(jù)自己需要調(diào)用函數(shù),就可以完成網(wǎng)絡設計、權值初始化、網(wǎng)絡訓練等。MATLAB神經(jīng)工具箱包括的網(wǎng)絡有感知器、線性網(wǎng)絡、BP神經(jīng)網(wǎng)絡、徑向基網(wǎng)絡、自組織網(wǎng)絡和回歸網(wǎng)絡。因此系統(tǒng)的軟件實現(xiàn)使用MATLAB。</p><p> 5 神經(jīng)網(wǎng)絡設計和MATLAB編程
51、</p><p> 5.1神經(jīng)網(wǎng)絡的設計</p><p> 5.1.1系統(tǒng)輸入信號的提取與表示</p><p> 本課題中將需要識別的0-9十個數(shù)字字符納入4×7的網(wǎng)格中,圖5-1—圖5-4所示就是數(shù)字0-9十個數(shù)字的網(wǎng)格圖。用數(shù)字1~28表示網(wǎng)格的序號,設計了一個具有28個分量的輸入向量X,其中每個分量的下標與網(wǎng)絡的序號相對應,其取值為1或0,它們
52、分別代表網(wǎng)絡內(nèi)字符筆跡的有無。則代表十個數(shù)字字符樣本的輸入向量分別為:</p><p> X0=(1 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 1)T;</p><p> X1=(0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0)T;</p><
53、;p> X2=(1 1 1 1 0 0 0 1 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 0 1 1 1 1)T;</p><p> X3=(1 1 1 1 0 0 0 1 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 1 1 1 1 1)T;</p><p> X4= (1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 0 1
54、 0 0 0 1 0 0 0 1 0) T;</p><p> X5= (1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 0 0 0 1 1 1 1 1) T;</p><p> X6= (1 1 1 1 1 0 0 0 1 0 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1) T;</p><p> X
55、7= (1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1) T;</p><p> X8= (1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1) T;</p><p> X9= (1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 0 0 0 1 0
56、0 0 1 1 1 1 1) T;</p><p> 在程序中輸入向量被定義成一個變量X。</p><p> 圖5-1 數(shù)字0-2字符的網(wǎng)絡表示</p><p> 圖5-2 數(shù)字3-5字符的網(wǎng)絡表示</p><p> 圖5-3 數(shù)字6-8字符的網(wǎng)絡表示</p><p> 圖5-4 數(shù)字9字符的網(wǎng)絡表示
57、</p><p> 5.1.2系統(tǒng)輸出信號的表示</p><p> 本課題采用了語言變量表示方法中的“n中取1”表示法。即期望輸出向量含有10個元素,數(shù)字字母在數(shù)字表中所占位置處元素為1,其他位置為0。因此十個數(shù)字字符輸出信號向量表示為:</p><p> Y0=(1 0 0 0 0 0 0 0 0 0);</p><p> Y1=(
58、0 1 0 0 0 0 0 0 0 0);</p><p> Y2=(0 0 1 0 0 0 0 0 0 0);</p><p> Y3=(0 0 0 1 0 0 0 0 0 0);</p><p> Y4=(0 0 0 0 1 0 0 0 0 0);</p><p> Y5=(0 0 0 0 0 1 0 0 0 0);</p&
59、gt;<p> Y6=(0 0 0 0 0 0 1 0 0 0);</p><p> Y7=(0 0 0 0 0 0 0 1 0 0);</p><p> Y8=(0 0 0 0 0 0 0 0 1 0);</p><p> Y9=(0 0 0 0 0 0 0 0 0 1);</p><p> 在程序中輸出向量被定義成
60、一個變量Y。</p><p> 5.1.3網(wǎng)絡拓撲結構的建立</p><p> 根據(jù)輸入、輸出信號的表示方法,本文建立了三層BP神經(jīng)網(wǎng)絡,其中輸入層神經(jīng)元節(jié)點數(shù)為28,隱層神經(jīng)元節(jié)點數(shù)為10,輸出層神經(jīng)元節(jié)點數(shù)為10,其拓撲結構如圖5-2</p><p> 圖5-2 數(shù)字識別系統(tǒng)神經(jīng)網(wǎng)絡拓撲結構圖</p><p> 5.2 數(shù)字識別
61、系統(tǒng)的Matlab語言編程</p><p> 5.2.1數(shù)字識別系統(tǒng)Matlab編程流程圖</p><p> 本文的Matlab編程流程圖如下圖5-3。</p><p> 圖5-3 Matlab編程流程圖</p><p> 5.2.2程序的初始化</p><p> 程序的初始化。首先生成10個數(shù)字字符的布爾
62、值樣本數(shù)據(jù),然后應用函數(shù)newff()構建一個三層BP神經(jīng)網(wǎng)絡。程序如下:</p><p> [X,Y]=XY; %調(diào)用函數(shù)XY生成10個數(shù)字字符輸入向量矩陣X和輸出向量方陣Y</p><p> [R,Q]=size(X); %確定輸入向量矩陣的大小為(R×Q)</p><p> [S2,Q]=size(Y); %確定輸出向量方陣的大小為(S2
63、15;Q)</p><p> S1=10; %確定隱層節(jié)點數(shù)大小為10</p><p> P=X; %把輸入向量矩陣賦值給P</p><p> net=newff(minmax(P),[S1,S2],{'logsig','logsig'},'traingdx'); %建立三層BP神經(jīng)網(wǎng)絡</p>
64、<p> net.LW{2,1}=net.LW{2,1}*0.01; %輸出層權值初始化</p><p> net.b{2}=net.b{2}+0.01; %輸出層神經(jīng)元閾值初始化</p><p> 5.2.3 網(wǎng)絡訓練</p><p> 為了使建立的網(wǎng)絡對輸入向量具有一定的容錯能力,采用的訓練辦法是既使用理想的信號,又使用帶有噪聲的信號對網(wǎng)絡
65、進行訓練。為了保證網(wǎng)絡同時具有對理想輸入和有噪聲輸入同時分類的能力,訓練有噪聲的輸入矢量是通過對兩組無噪聲訓練的同時,加上兩對有隨機噪聲輸入矢量來實現(xiàn)的。網(wǎng)絡訓練完成后,為保證網(wǎng)絡能夠準確無誤地識別出理想的數(shù)字,我們可以再用理想的無噪聲輸入矢量對網(wǎng)絡再訓練一次。將最終的訓練結果存入一個數(shù)據(jù)文件,作為下一步網(wǎng)絡識別用的權矢量。具體過程如下:</p><p><b> 1.無噪聲訓練</b>&
66、lt;/p><p> 應用理想的輸入信號對網(wǎng)絡進行訓練,直到均方差達到精度要求,程序如下:</p><p> T=Y; %把輸出向量方陣賦值給目標輸出向量矩陣T</p><p> net.performFcn='sse';</p><p> net.trainParam.goal=0.1; %最小誤差設置為0.1<
67、;/p><p> net.trainParam.show=20; %每隔20次顯示一次結果</p><p> net.trainParam.epochs=5000; %最大訓練次數(shù)為5000</p><p> net.trainParam.mc=0.95;</p><p> [net,tr]=train(net,P,T) %對新建立
68、的BP神經(jīng)網(wǎng)絡進行訓練</p><p><b> 2.有噪聲訓練</b></p><p> 為了保證設計的網(wǎng)絡對于噪聲信號有一定的容錯能力,采用由兩套理想數(shù)字字符向量和兩套帶有一定噪聲的數(shù)字字符向量作為新的訓練樣本,那兒期望輸出向量信號就包括4組重復數(shù)字字母向量方陣。加入的噪聲采用均值為0.1和0.2兩種信號,并且在循環(huán)中重復10次,而每一次循環(huán)訓練300次,誤差
69、精度為0.6。程序如下:</p><p> netn=net; %把前面訓練好的的BP網(wǎng)絡賦給netn</p><p> netn.trainParam.goal=0.6; %設置誤差精度為0.6</p><p> netn.trainParam.epochs=300;%訓練次數(shù)為300</p><p> T=[Y Y Y Y];
70、 %設置目標向量矩陣</p><p> for pass=1:10 %重復循環(huán)訓練10次</p><p> P=[X,X,(X+randn(R,Q)*0.2),(X+randn(R,Q)*0.3)]; %設置輸入信號矩陣</p><p> [netn,tr]=train(net,P,T); %進行有噪聲網(wǎng)絡訓練</p><p>
71、<b> 3.再次無噪聲訓練</b></p><p> 通過這次訓練使得網(wǎng)絡進行理想信號識別時,節(jié)省資源。程序如下:</p><p> netn.trainParam.goal=0.1; %設置網(wǎng)絡訓練誤差精度</p><p> netn.trainParam.epochs=500; %設置網(wǎng)絡訓練次數(shù)</p>&l
72、t;p> netn.trainParam.show=5; %設置每訓練5次顯示一次結果</p><p> P=X; %給網(wǎng)絡輸入矩陣P賦值</p><p> T=Y; %給網(wǎng)絡輸出目標矩陣賦值</p><p> [net,tr]=train(netn,P,T) %訓練BP神經(jīng)網(wǎng)絡</p><p><b> 5
73、.2.4系統(tǒng)性能</b></p><p> 為了測量所設計的神經(jīng)網(wǎng)絡模式識別系統(tǒng)的可靠性,應用上百個輸入向量加入不同的噪聲信號進行測試,并繪制網(wǎng)絡識別錯誤與噪聲信號的比較曲線。加入網(wǎng)絡輸入向量的噪聲均值為0,標準差范圍為0~0.5。在每個噪聲級別上,分別利用100個不同的噪聲信號進行試驗,并將噪聲信號加到每個字符向量上,然后通過仿真計算網(wǎng)絡輸出,將輸出通過競爭傳遞函數(shù),保證輸出向量10個元素中有一個
74、值為1,其余均為0。程序如下:</p><p> noise_range=0:0.05:0.5; %設置噪聲均值范圍</p><p> max_test=100; %設置噪聲信號個數(shù)</p><p> network1=[]; %矩陣賦值語句</p><p> network2=[]; %矩陣賦值語句</p>
75、<p> T=Y; %設置輸出目標信號矩陣</p><p> for noiselevel=noise_range %利用for循環(huán)語句設置噪聲均值</p><p> errors1=0; %給變量賦初始值</p><p> errors2=0; %給變量賦初始值</p><p> for i=1:max_tes
76、t %利用for循環(huán)語句設置100個噪聲信號</p><p> P=X+randn(28,10)*noiselevel; %設置帶有噪聲的輸入信號</p><p> A=sim(net,P); %利用無噪聲網(wǎng)絡仿真求實際輸出信號</p><p> AA=compet(A); %確定輸出向量方陣的每個列向量的10個分量元素中有一個值為1,其余為0<
77、/p><p> errors1=errors1+sum(sum(abs(AA-T)))/2; %計算識別誤差</p><p> An=sim(netn,P); %利用有噪聲網(wǎng)絡仿真求實際輸出信號</p><p> AAn=compet(An); %確定輸出向量方陣的每個列向量的10個分量元素中有一個值為1,其余為0</p><p>
78、 errors2=errors2+sum(sum(abs(AAn-T)))/2; %計算識別誤差</p><p><b> end</b></p><p> network1=[network1 errors1/10/100];</p><p> network2=[network2 errors2/10/100];</p>
79、<p><b> end</b></p><p> plot(noise_range,network1*100,'r',noise_range,network2*100); %繪制識別誤差與噪聲指標的關系圖</p><p> title('識別誤差'); %設置圖形標題</p><p>
80、 xlabel('噪聲指標'); %設置橫坐標標題</p><p> ylabel('無噪聲訓練網(wǎng)絡 – 有噪聲訓練網(wǎng)絡 ---'); %設置縱坐標標題</p><p> 識別誤差與噪聲的關系圖如圖5-4</p><p> 圖5-4 識別誤差與噪聲的關系圖</p><p> 5.2.5 生成輸入向
81、量矩陣和輸出向量方陣的MATLAB函數(shù)文件</p><p> function [X,Y] = XY()</p><p> %生成(28×10)的輸入向量矩陣X</p><p> letter0 = [1 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 1]’;</p><p
82、> letter1 = [0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0]';</p><p> letter2 = [1 1 1 1 0 0 0 1 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 0 1 1 1 1]';</p><p> letter3 = [1 1 1 1 0 0
83、 0 1 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 1 1 1 1 1]';</p><p> letter4 = [1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 0 1 0 0 0 1 0 0 0 1 0]';</p><p> letter5 = [1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0
84、 1 0 0 0 1 1 1 1 1]';</p><p> letter6 = [1 1 1 1 1 0 0 0 1 0 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1]';</p><p> letter7 = [1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1]';
85、</p><p> letter8 = [1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1]';</p><p> letter9 = [1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 0 0 0 1 0 0 0 1 1 1 1 1]';</p><p> X=[
86、letter0,letter1,letter2,letter3,letter4,letter5,letter6,letter7,letter8,letter9];</p><p> %生成(10×10)的輸出方陣Y</p><p> Y = eye(10) </p><p> 5.2.6 繪制數(shù)字字符圖像的MATLAB函數(shù)文件</p>
87、<p> function plotcharsz(c)</p><p> x1 = [-0.5 -0.5 +0.5 +0.5 -0.5];</p><p> y1 = [-0.5 +0.5 +0.5 -0.5 -0.5];</p><p> x2 = [x1 +0.5 +0.5 -0.5];</p><p> y2 =
88、[y1 +0.5 -0.5 +0.5];</p><p> newplot; %繪制新圖形</p><p> axis([-1.5 6.5 -0.5 7.5]); %坐標比例控制,即x軸范圍為[-1.5,6.5],y軸范圍為[-0.5,7.5]</p><p> axis('equal') %將圖形的x,y坐標軸的單位刻度設置為相等<
89、;/p><p> axis off </p><p> hold on %保持當前圖形及軸系的所有特性</p><p> for i=1:length(c)</p><p> x = rem(i-1,4)+.5;</p><p> y = 5-floor((i-1)/4)+1.5;</p>&l
90、t;p> plot(x2*c(i)+x,y2*c(i)+y); %繪制數(shù)字字符圖形</p><p><b> end</b></p><p> hold off %解除hold on函數(shù)</p><p> 5.2.7 數(shù)字字符識別測試仿真程序</p><p> 用訓練好的BP網(wǎng)絡仿真識別帶有噪聲的數(shù)字
91、“9”,其仿真識別程序如下:</p><p> noisyJ=X(:,10)+randn(28,1)*0.3; %設置帶有噪聲的數(shù)字字符“9”的輸入信號</p><p> subplot(121) %繪圖區(qū)域分割為1行2列,本圖畫在第1列位置處</p><p> plotcharsz(noisyJ); %調(diào)用plotcharsz函數(shù)文件繪制帶有噪聲的數(shù)字
92、字符“9”的圖像</p><p> A2=sim(net,noisyJ); %利用訓練好的網(wǎng)絡仿真求輸出信號</p><p> A2=compet(A2); %確定輸出信號向量的10個分量中有一個元素為1,其余元素為0</p><p> answer=find(compet(A2)==1); %求出仿真輸出信號在輸出目標信號方陣中的位置(即第幾列)<
93、;/p><p> subplot(122) %繪圖區(qū)域分割為1行2列,本圖繪制在第2列位置處</p><p> plotcharsz(X(:,answer)); %調(diào)用plotcharsz函數(shù)文件繪制仿真后所得數(shù)字字符圖像</p><p> 數(shù)字字符識別系統(tǒng)程序運行后,識別結果如圖5-5所示:</p><p> 圖5-5 識別數(shù)字字母
94、“9”</p><p><b> 6 結論和展望</b></p><p> 本文在對BP神經(jīng)網(wǎng)絡進行深入分析的基礎上,通過實驗探索了BP神經(jīng)網(wǎng)絡用于數(shù)字識別的可行性和有效性。MATLAB實驗結果表明,基于BP神經(jīng)網(wǎng)絡的數(shù)字識別系統(tǒng)能夠有效地完成識別任務??梢灶A見,在科技高度發(fā)展的未來,神經(jīng)網(wǎng)絡將會被運用的越來越廣泛。</p><p><
95、;b> 參考文獻</b></p><p> [1]黨建武.神經(jīng)網(wǎng)絡技術及應用[M].北京: 中國鐵道出版, 2000,7.</p><p> [2]Simon Haykin. Neural networks a comprehensive foundation[M]2nd ed.北京: 清華大學出版, 2001,10.</p><p> [
96、3]張德豐.MATLAB神經(jīng)網(wǎng)絡應用設計[M].北京:機械工業(yè)出版社,2009,1.</p><p> [4]樓順天,施陽.基于MATLAB的系統(tǒng)分析與設計-神經(jīng)網(wǎng)絡[M] .西安:西安電子科技大學出版社,1998,9.</p><p> [5]聞新,周露,王丹力,熊曉英.MATLAB神經(jīng)網(wǎng)絡應用設計[M] .北京:科學出版社,2000,9.</p><p>
97、 [6]張寶偉,聞新,李翔,周露.MATLAB神經(jīng)網(wǎng)絡仿真與應用[M].北京:科學出版社,2003,7.</p><p> [7]甘俊英,張有為.基于BP神經(jīng)網(wǎng)絡的人臉識別[J].系統(tǒng)工程與電子技術,2003,25(1).</p><p> [8]周忠海,張奚寧,張濤,泮利.BP神經(jīng)網(wǎng)絡及其在圖像壓縮中的應用[J].中國水運(理論版),2006,4(6).</p><
98、;p> [9]郭榮艷,胡雪惠. BP神經(jīng)網(wǎng)絡在車牌字符識別中的應用研究[J].計算機仿真,2010,9,27(9).</p><p> [10]馮必波.BP 神經(jīng)網(wǎng)絡在教學質(zhì)量評價體系中的應用[J].計算機與數(shù)字工程,2010,1,38(4).</p><p> [11] 林康紅,施惠昌,盧強. 基于神經(jīng)網(wǎng)絡的傳感器非線性誤差校正[J].傳感器技術,2002,21(1).<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于bp神經(jīng)網(wǎng)絡的數(shù)字字母識別系統(tǒng)設計——識別系統(tǒng)的matlab實現(xiàn)【開題報告】
- 基于bp神經(jīng)網(wǎng)絡的數(shù)字字母識別系統(tǒng)設計——系統(tǒng)的matlab實現(xiàn)【任務書】
- 基于bp神經(jīng)網(wǎng)絡的數(shù)字字母識別系統(tǒng)設計——系統(tǒng)分析設計【畢業(yè)論文】
- 畢業(yè)論文-開題報告-文獻綜述基于bp神經(jīng)網(wǎng)絡的數(shù)字字母識別系統(tǒng)設計——系統(tǒng)分析設計
- 畢業(yè)論文-開題報告-文獻綜述基于bp神經(jīng)網(wǎng)絡的數(shù)字字母識別系統(tǒng)設計——系統(tǒng)分析設計
- 基于bp神經(jīng)網(wǎng)絡的數(shù)字字母識別系統(tǒng)設計——系統(tǒng)分析設計【開題報告】
- 基于bp神經(jīng)網(wǎng)絡的數(shù)字字母識別系統(tǒng)設計——系統(tǒng)分析設計【任務書】
- 基于BP神經(jīng)網(wǎng)絡的手寫數(shù)字識別系統(tǒng)的設計與實現(xiàn).pdf
- 基于神經(jīng)網(wǎng)絡的人臉識別系統(tǒng)設計【畢業(yè)論文】
- 基于神經(jīng)網(wǎng)絡的數(shù)字識別系統(tǒng)的設計
- 基于BP神經(jīng)網(wǎng)絡的手寫數(shù)字識別系統(tǒng)研究.pdf
- 基于卷積神經(jīng)網(wǎng)絡的圖片數(shù)字識別系統(tǒng)設計與實現(xiàn)
- 基于bp神經(jīng)網(wǎng)絡與方向小波的手寫數(shù)字識別系統(tǒng)
- 基于BP神經(jīng)網(wǎng)絡的車牌識別系統(tǒng)研究.pdf
- 基于BP神經(jīng)網(wǎng)絡的印刷字符識別系統(tǒng).pdf
- 基于卷積神經(jīng)網(wǎng)絡的圖片數(shù)字識別系統(tǒng)設計與實現(xiàn).pdf
- 基于神經(jīng)網(wǎng)絡的數(shù)字識別系統(tǒng)的研究與設計.pdf
- 基于BP神經(jīng)網(wǎng)絡的人臉識別系統(tǒng)研究與實現(xiàn).pdf
- 基于BP神經(jīng)網(wǎng)絡的車輛車牌識別系統(tǒng)的研究與實現(xiàn).pdf
- 基于BP神經(jīng)網(wǎng)絡的電力監(jiān)測多規(guī)約識別系統(tǒng)的設計與實現(xiàn).pdf
評論
0/150
提交評論