神經(jīng)網(wǎng)絡(luò)編程入門經(jīng)典_第1頁
神經(jīng)網(wǎng)絡(luò)編程入門經(jīng)典_第2頁
神經(jīng)網(wǎng)絡(luò)編程入門經(jīng)典_第3頁
神經(jīng)網(wǎng)絡(luò)編程入門經(jīng)典_第4頁
神經(jīng)網(wǎng)絡(luò)編程入門經(jīng)典_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

本文主要內(nèi)容包括:(1)介紹神經(jīng)網(wǎng)絡(luò)基本原理,(2)AForge.NET實(shí)現(xiàn)前向神經(jīng)網(wǎng)絡(luò)的方法,(3) 向神經(jīng)網(wǎng)絡(luò)的方法。0本文以Fisher的Iris數(shù)據(jù)集作為神經(jīng)網(wǎng)絡(luò)程序的測試數(shù)據(jù)集。Iris數(shù)據(jù)集可找到。這里簡要介紹一下Iris數(shù)據(jù)集:(見本文件夾中的Fisher'sIris有一批Irs花,已知這批Iris花可分為3個品種,現(xiàn)需要對其進(jìn)行分類。不同品種的Iris花的花萼長度、花萼寬度、花瓣長度、花瓣寬度會有差異。我們現(xiàn)有一批已知品種的Iris花的花萼長度、花萼寬度、花瓣長度、花瓣寬度的數(shù)據(jù)。一種解決方法是用已有的數(shù)據(jù)訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)用作分類如果你只想用C或 快速實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)來解決你手頭上的問題,或者已經(jīng)了解神經(jīng)網(wǎng)絡(luò)基本原理,請直接跳到第二節(jié)——神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)。第一節(jié)、神經(jīng)網(wǎng)絡(luò)基本原人工神經(jīng)元(ArtificialNeuron)模人工神經(jīng)元是神經(jīng)網(wǎng)絡(luò)的基本元素,其原理可以用下圖表示1.人工神經(jīng)元模圖中x1~xn是從其他神經(jīng)元傳來的輸入信號,wij表示表示從神經(jīng)元j到神經(jīng)元i的連接權(quán)值,θ表示一個threshold,或稱為偏置bias。則神經(jīng)元i的輸出與輸入的關(guān)系表示圖中yi表示神經(jīng)元i的輸出,函數(shù)f稱為激活函ActivationFunction或轉(zhuǎn)移Function,net稱為凈激活(netactivation)。若將閾值看成是神經(jīng)元i的一個輸入x0的權(quán)重wi0,則上面的式子若用X表示輸入向量,用W表示權(quán)重向量,即X=[x0,x1,x2 ,xn則神經(jīng)元的輸出可以表示為向量相乘的形式若神經(jīng)元的凈激活net為正,稱該神經(jīng)元處于激活狀態(tài)或興奮狀態(tài)fre),若凈激活net為負(fù),則稱神經(jīng)元處于抑制狀態(tài)。圖1中的這種“閾值和”的神經(jīng)元模型稱為M-P模型(McCulloch-PittsModel),也稱為神經(jīng)網(wǎng)絡(luò)的一個處理單元(PE,ProcessingElement)。常用激活函激活函數(shù)的選擇是構(gòu)建神經(jīng)網(wǎng)絡(luò)過程中的重要環(huán)節(jié),下面簡要介紹常用的激活函數(shù)線性函數(shù)LinerFunction斜面函數(shù)RampFunction閾值函數(shù)ThresholdFunction以上3個激活函數(shù)都屬于線性函數(shù),下面介紹兩個常用的非線性激活函數(shù)S形函數(shù)SigmoidFunction該函數(shù)的導(dǎo)函數(shù)S形函該函數(shù)的導(dǎo)函數(shù)S形函數(shù)與雙極S形函數(shù)的圖像如下3.S形函數(shù)與雙極S形函數(shù)圖雙極S形函數(shù)與S形函數(shù)主要區(qū)別在于函數(shù)的值域,雙極S形函數(shù)值域是(-1,1),而S形函數(shù)值域是(0,1)。由于S形函數(shù)與雙極S形函數(shù)都是可導(dǎo)的(導(dǎo)函數(shù)是連續(xù)函數(shù)),因此適合用在BP神經(jīng)網(wǎng)絡(luò)中。(BP算法要求激活函數(shù)可導(dǎo)神經(jīng)網(wǎng)絡(luò)模神經(jīng)網(wǎng)絡(luò)是由大量的神經(jīng)元互聯(lián)而構(gòu)成的網(wǎng)絡(luò)。根據(jù)網(wǎng)絡(luò)中神經(jīng)元的互聯(lián)方式,常見網(wǎng)絡(luò)結(jié)構(gòu)主要可以分為下面3類:前饋神經(jīng)網(wǎng)絡(luò)(FeedforwardNeuralNetworks前饋網(wǎng)絡(luò)也稱前向網(wǎng)絡(luò)。這種網(wǎng)絡(luò)只在訓(xùn)練過程會有反饋信號,而在分類過程中數(shù)據(jù)只能向前傳送,直到到達(dá)輸出層,層間沒有向后的反饋信號,因此被稱為前饋網(wǎng)絡(luò)。感知機(jī)(pereptrn)與BP神經(jīng)網(wǎng)絡(luò)就屬于前饋網(wǎng)絡(luò)。圖4中是一個3層的前饋神經(jīng)網(wǎng)絡(luò),其中第一層是輸入單元,第二層稱為隱含層,第三層稱為輸出層(輸入單元不神經(jīng)元,因此圖中有2層神經(jīng)元)4.前饋神經(jīng)對于一個3層的前饋神經(jīng)網(wǎng)絡(luò)N,若用X表示網(wǎng)絡(luò)的輸入向量,W1~W3表示網(wǎng)絡(luò)各層的連接權(quán)向量,F(xiàn)1表示神經(jīng)網(wǎng)絡(luò)3層的激活函數(shù)。那么神經(jīng)網(wǎng)絡(luò)的第一層神經(jīng)元的輸出輸出層的輸出為

O1=F1(XW1O2=F2(F1(XW1)W2O3=F3(F2(F1(XW1)W2)W3若激活函數(shù)F13都選用線性函數(shù),那么神經(jīng)網(wǎng)絡(luò)的輸出O3將是輸入X的線性函數(shù)。因此,若要做高次函數(shù)的近就應(yīng)該選用適當(dāng)?shù)姆蔷€性函數(shù)作為激活函數(shù)。反饋神經(jīng)網(wǎng)絡(luò)(FeedbackNeuralNetworks反饋型神經(jīng)網(wǎng)絡(luò)是一種從輸出到輸入具有反饋連接的神經(jīng)網(wǎng)絡(luò),其結(jié)構(gòu)比前饋網(wǎng)絡(luò)要復(fù)雜得多。典型的反饋型神經(jīng)網(wǎng)絡(luò)有:Elan網(wǎng)絡(luò)和Hopfed網(wǎng)絡(luò)。5.反饋神經(jīng)SOMSelf-OrganizingNeuralNetworks自組織神經(jīng)網(wǎng)絡(luò)是一種無導(dǎo)師絡(luò)。它通過自動尋找樣本中的內(nèi)在規(guī)律和本質(zhì)屬性,自組織、自適應(yīng)地改變網(wǎng)絡(luò)參數(shù)與結(jié)構(gòu)。6.自組織網(wǎng)神經(jīng)網(wǎng)絡(luò)工作方神經(jīng)網(wǎng)絡(luò)運(yùn)作過程分為學(xué)習(xí)和工作兩種狀神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)狀網(wǎng)絡(luò)的學(xué)習(xí)主要是指使用學(xué)習(xí)算法來調(diào)整神經(jīng)元間的聯(lián)接權(quán),使得網(wǎng)絡(luò)輸出更符合實(shí)際。學(xué)習(xí)算法分為有導(dǎo)師學(xué)SupervisedLearning與無導(dǎo)師學(xué)習(xí)UnsupervisedLearning有導(dǎo)師學(xué)習(xí)算法將一組訓(xùn)練集trainingset送入網(wǎng)絡(luò),根據(jù)網(wǎng)絡(luò)的實(shí)際輸出與期望輸出間的差別來調(diào)整連接權(quán)。有從樣本集合中取一個樣本計(jì)算網(wǎng)絡(luò)的實(shí)際輸出D=Bi-根據(jù)D調(diào)整權(quán)矩陣對每個樣本重復(fù)上述過程,直到對整個樣本集來說,誤差不超過規(guī)定范BP算法就是一種出色的有導(dǎo)師學(xué)習(xí)算無導(dǎo)師學(xué)習(xí)抽取樣本集合中蘊(yùn)含的統(tǒng)計(jì)特性,并以神經(jīng)元之間的聯(lián)接權(quán)的形式存于網(wǎng)絡(luò)中Hebb學(xué)習(xí)律是一種經(jīng)典的無導(dǎo)師學(xué)習(xí)算法神經(jīng)下面簡要介紹一下Hebb學(xué)習(xí)率與eta學(xué)習(xí)規(guī)則。無導(dǎo)師學(xué)習(xí)算法:Hebb學(xué)習(xí)Hebb算法思想是,當(dāng)兩個神經(jīng)元同時處于激發(fā)狀態(tài)時兩者間的連接權(quán)會被加強(qiáng),否則被減弱為了理解Hebb算法,有必要簡單介紹一下條件反射實(shí)驗(yàn)。的條件反射實(shí)驗(yàn):每次給狗喂食前都先響鈴,時間一長,狗就會將鈴聲和食物聯(lián)系起來。以后如果響鈴但是不給食物,狗也會流口水。圖7.的條件反射實(shí)受該實(shí)驗(yàn)的啟發(fā),Hebb的理論認(rèn)為在同一時間被激發(fā)的神經(jīng)元間的聯(lián)系會被強(qiáng)化。比如,鈴聲響時一個神經(jīng)元被激發(fā),在同一時間食物的出現(xiàn)會激發(fā)附近的另一個神經(jīng)元,那么這兩個神經(jīng)元間的聯(lián)系就會強(qiáng)化,從而記住這兩個事物之間存在著聯(lián)系。相反,如果兩個神經(jīng)元總是不能同步激發(fā),那么它們間的聯(lián)系將會越來越弱。Hebb學(xué)習(xí)律可表示為其中wij表示神經(jīng)元j到神經(jīng)元i的連接權(quán),yi與yj為兩個神經(jīng)元的輸出,a是表示學(xué)習(xí)速度的常數(shù)。若yi與yj同時被激活,即yi與yj同時為正,那么Wij將增大。若yi被激活,而yj處于抑制狀態(tài),即yi為正yj為負(fù),那么Wij將有導(dǎo)師學(xué)習(xí)算法:Delta學(xué)習(xí)規(guī)eta學(xué)習(xí)規(guī)則是一種簡單的有導(dǎo)師學(xué)習(xí)算法,該算法根據(jù)神經(jīng)元的實(shí)際輸出與期望輸出差別來調(diào)整連接權(quán),其數(shù)學(xué)表示如下:其中Wij表示神經(jīng)元j到神經(jīng)元i的連接權(quán),di是神經(jīng)元i的期望輸出,yi是神經(jīng)元i的實(shí)際輸出,xj表示神經(jīng)元j狀態(tài),若神經(jīng)元j處于激活態(tài)則xj為1,若處于抑制狀態(tài)則xj為0或-1(根據(jù)激活函數(shù)而定)。a是表示學(xué)習(xí)速度的常數(shù)。假設(shè)xi為1,若di比yi大,那么Wij將增大,若di比yi小,那么Wij將變小。eta規(guī)則簡單講來就是:若神經(jīng)元實(shí)際輸出比期望輸出大,則減小所有輸入為正的連接的權(quán)重,增大所有輸入為負(fù)的連接的權(quán)重。反之,若神經(jīng)元實(shí)際輸出比期望輸出小,則增大所有輸入為正的連接的權(quán)重,減小所有輸入為負(fù)的連接的權(quán)重。這個增大或減小的幅度就根據(jù)上面的式子來計(jì)算。有導(dǎo)師學(xué)習(xí)算法:BP算采用BP學(xué)習(xí)算法的前饋型神經(jīng)網(wǎng)絡(luò)通常被稱為BP網(wǎng)絡(luò)8.三層BP神經(jīng)網(wǎng)絡(luò)結(jié)BP網(wǎng)絡(luò)具有很強(qiáng)的非線性映射能力,一個3層BP神經(jīng)網(wǎng)絡(luò)能夠?qū)崿F(xiàn)對任意非線性函數(shù)進(jìn)行近(根Kolrnogorov定理)。一3層BP神經(jīng)網(wǎng)絡(luò)模型如圖7BP網(wǎng)絡(luò)的學(xué)習(xí)算法占篇幅較大,我打算在下一篇文章中介紹在訓(xùn)練神經(jīng)網(wǎng)絡(luò)前一般需要對數(shù)據(jù)進(jìn)行預(yù)處理,一種重要的預(yù)處理是歸一化處理。下面簡要介紹歸一化處理的原理與方法。數(shù)據(jù)歸一化,就是將數(shù)據(jù)映射到[0,1]或[-1,1]區(qū)間或更小的區(qū)間,比如(0.1,0.9)為什么要?dú)w一化處理<1>輸入數(shù)據(jù)的單位不一樣,有些數(shù)據(jù)的范圍可能特別大,導(dǎo)致的結(jié)果是神經(jīng)網(wǎng)絡(luò)收斂慢、訓(xùn)練時間長<2>數(shù)據(jù)范圍大的輸入在模式分類中的作用可能會偏大,而數(shù)據(jù)范圍小的輸入作用就可能會偏小>由于神經(jīng)網(wǎng)絡(luò)輸出層的激活函數(shù)的值域是有限制的,因此需要將網(wǎng)絡(luò)訓(xùn)練的目標(biāo)數(shù)據(jù)映射到激活函數(shù)的值域。例如神經(jīng)網(wǎng)絡(luò)的輸出層若采用S形激活函數(shù),由于S形函數(shù)的值域限制在(0,1),也就是說神經(jīng)網(wǎng)絡(luò)的輸出只能限制在(0,1),所以訓(xùn)練數(shù)據(jù)的輸出就要?dú)w一化到,1]區(qū)間。S形激活函數(shù)在1)區(qū)間以外區(qū)域很平緩,區(qū)分度太小。例如S形函數(shù)fX)在參數(shù)a1時,f0)與f)只相差0.0067。一種簡單而快速的歸一化算法是線性轉(zhuǎn)換算法。線性轉(zhuǎn)換算法常見有兩種形式y(tǒng)=(x-min)/(max-min其中min為x的最小值,max為x的最大值,輸入向量為x,歸一化后的輸出向量為y。上式將數(shù)據(jù)歸一化[0,1]區(qū)間,當(dāng)激S形函數(shù)時(值域?yàn)?0,1))時這條式子適用y=2*(x-min)/(max-min)-這條將數(shù)據(jù)歸一化到[-1,1]區(qū)間。當(dāng)激活函數(shù)采用雙極S形函數(shù)(值域?yàn)?-1,1))時這條式子適用中歸一化處理數(shù)據(jù)可以采用premnmxpostmnmxtramnmx3個函<1>語法:[pn,minp,maxp,tn,mint,maxt]=參數(shù)pnp矩陣按行歸一化后的minp,maxp:p矩陣每一行的最小值,最大值(按行歸一化tn:t矩陣按行歸一化后的mint,maxt:t矩陣每一行的最小值,最大作用:將矩陣p,t歸一化到[-1,1],主要用于歸一化處理訓(xùn)練數(shù)據(jù)集<2>我們在訓(xùn)練網(wǎng)絡(luò)時,如果所用的是經(jīng)過歸一化的樣本數(shù)據(jù),那么以后使用網(wǎng)絡(luò)時所用的新數(shù)據(jù)也應(yīng)該和樣本數(shù)據(jù)接受相同的預(yù)處理,這就要用到tranx,換句話說使用同一個歸一化設(shè)置settn)歸一化另外一組數(shù)據(jù)。語法:[pn]參數(shù)minp,maxp:premnmx函數(shù)計(jì)算的矩陣的最小,最pn:歸一化后的矩作用:主要用于歸一化處理待分類的輸入數(shù)據(jù)<3>語法[p,t]參數(shù)minp,maxp:premnmx函數(shù)計(jì)算的p矩陣每行的最小值,最mint,maxt:premnmx函數(shù)計(jì)算的t矩陣每行的最小值,最大作用:將矩陣pn,n映射回歸一化處理前的范圍。potnx函數(shù)主要用于將神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果映射回歸一化前的數(shù)據(jù)范圍。反歸一化小插曲 歸一化和反歸一化例子見本文檔最后5、自己寫歸一化函數(shù),這個網(wǎng)上很多,大家可以下輸入訓(xùn)練數(shù)據(jù)的亂序排法,以及分類注意:dividevec()函數(shù)在7.6版本還可以使把數(shù)據(jù)重新打亂順序,進(jìn)行輸入,可以讓數(shù)據(jù)更加具備典型性和更優(yōu)良的泛化能力!把數(shù)據(jù)進(jìn)行打亂,并分類為:訓(xùn)練輸入數(shù)據(jù)、變量數(shù)據(jù)、測試數(shù)據(jù)的方法用搜了一下,發(fā)現(xiàn)有些方法,但居然很少看到使用內(nèi)部函數(shù)直接進(jìn)行的,其實(shí)自帶的內(nèi)部函dividevec,完全能勝任上述工作,推薦但這個存在一個問題是因?yàn)榇騺y了最后分析結(jié)果的時候數(shù)據(jù)重新排列因?yàn)閬G失了數(shù)據(jù)在數(shù)組中的位置參數(shù)。具體用法可以參見下面bp交通預(yù)測的例子。mathworksnnet的新手冊里面似乎沒有介紹dividverc這個函數(shù)了,但增加了新的函數(shù)來完成上述功能,并返回標(biāo)(手頭沒裝新版本NeuralNetworkToolbox Version6.0 (R2008a)),看guide大概是這個意思(有新divideblock,divideind,divideint和上述函數(shù),用法和功能基本相同,只是打亂的方法不一樣,分別是ok方法抽取、按數(shù)組標(biāo)號自定義抽取、交錯索引抽取和隨機(jī)抽。下面以divideblock為例,講解其基本用法:[trainV,valV,testV,trainInd,valInd,testInd][訓(xùn)練數(shù)據(jù),變量數(shù)據(jù),測試數(shù)據(jù),訓(xùn)練數(shù)據(jù)矩陣的標(biāo)號,變量數(shù)據(jù)標(biāo)號,測試數(shù)據(jù)標(biāo)號]dvdebok(所有數(shù)據(jù),訓(xùn)練數(shù)據(jù)百分比變量數(shù)據(jù)百分比測試數(shù)據(jù)百分比)其實(shí)dvdevec和后面四個分類函數(shù)的區(qū)別在于,iivec一般直接在代碼中調(diào)用。而后面四個函數(shù)是通過設(shè)置網(wǎng)絡(luò)的 函數(shù)來實(shí)現(xiàn),比如, ='diio',但不是說不可以在代碼中像dvdevec直接調(diào)用使 實(shí)現(xiàn)神經(jīng)網(wǎng)使 建立前饋神經(jīng)網(wǎng)絡(luò)主要會使用到下面3個函數(shù)newff:前饋網(wǎng)絡(luò)創(chuàng)建函數(shù)sim:使用網(wǎng)絡(luò)進(jìn)行仿真下面簡要介紹這3個函數(shù)的用法newff函<1>newff函數(shù)語neff函數(shù)參數(shù)列表有很多的可選參數(shù),具體可以參考 的幫助文檔,這里介紹neff函數(shù)的一種簡單的形式。語法:netnewffAB{C}參數(shù)A:一個n×2的矩陣,第i行元素為輸入信號xi的最小值和最大B:一個k維行向量,其元素為網(wǎng)絡(luò)中各層節(jié)點(diǎn)數(shù)C:一個k維字符串行向量,每一分量為對應(yīng)層神經(jīng)元的激活函數(shù)trainFun:為學(xué)習(xí)規(guī)則采用的訓(xùn)練算法<2>常用的激活函數(shù)(Lineartransferf(x)=該函數(shù)的字符串為’purelin’S形轉(zhuǎn)移函數(shù)Logarithmicsigmoidtransferfunction該函數(shù)的字符串為’logsig’雙曲正S形函(Hyperbolictangentsigmoidtransferfunction也就是上面所提到的雙極S形函數(shù)。該函數(shù)的字符串為’tansig’。的安 下的toolbox\nnet\nnet\nntransfer 中有所有激活函數(shù)的定義說明traingd:梯度下降BP訓(xùn)練函數(shù)(Gradientdescentbackpropagation)traingdx:梯度下降自適應(yīng)學(xué)習(xí)率訓(xùn)練函數(shù)<4>網(wǎng)絡(luò)配置參net.trainparam.goal:神經(jīng)網(wǎng)絡(luò)訓(xùn)練的目標(biāo)誤差net.trainparam.show:顯示中間結(jié)果的周期 net.trainParam.lr:學(xué)習(xí)率train函網(wǎng)絡(luò)訓(xùn)練學(xué)習(xí)函數(shù)語法:nettr,Y1,Etrain(netXYtr:訓(xùn)練信息sim函net:網(wǎng)X:輸入給網(wǎng)絡(luò)的K×N矩陣,其中K為網(wǎng)絡(luò)輸入個數(shù),N為數(shù)Y:輸出矩陣Q×N,其中Q為網(wǎng)絡(luò)輸出個BP網(wǎng)絡(luò)實(shí)我將Iris數(shù)據(jù)集分為2組,每組各75個樣本,每組中每種花各有25個樣本。其中一組作為以上程序的訓(xùn)練樣本,另外一組作為檢驗(yàn)樣本。為了方便訓(xùn)練,將3類花分別編號為1,2,3。使用這些數(shù)據(jù)訓(xùn)練一個4輸入(分別對應(yīng)4個特征),3輸出(分別對應(yīng)該樣本屬于某一品種的可能性大?。┑那跋蚓W(wǎng)絡(luò)。以上程序的識別率穩(wěn)定在95%左右,訓(xùn)練100次左右達(dá)到收斂,訓(xùn)練曲線如下圖所9.訓(xùn)練性能參數(shù)設(shè)置對神經(jīng)網(wǎng)絡(luò)性能的影我在實(shí)驗(yàn)中通過調(diào)整隱含層節(jié)點(diǎn)數(shù),選擇不通過的激活函數(shù),設(shè)定不同的學(xué)習(xí)率<1>隱含層節(jié)點(diǎn)的個數(shù)對于識別率的影響并不大,但是節(jié)點(diǎn)個數(shù)過多會增加運(yùn)算量,使得訓(xùn)練較<2>激活函數(shù)無論對于識別率或收斂速度都有顯著的影響。在近高次曲線時,S形函數(shù)精度比線性函數(shù)要高得多,但計(jì)算量也要大得多。<3>學(xué)習(xí)率的選學(xué)習(xí)率影響著網(wǎng)絡(luò)收斂的速度,以及網(wǎng)絡(luò)能否收斂。學(xué)習(xí)率設(shè)置偏小可以保證網(wǎng)絡(luò)收斂,但是收斂較慢。相反,學(xué)習(xí)率設(shè)置偏大則有可能使網(wǎng)絡(luò)訓(xùn)練不收斂,影響識別效果。使用AForge.NET實(shí)現(xiàn)神經(jīng)網(wǎng)AForge.NET簡AForge.NET是一個C#實(shí)現(xiàn)的面向人工智能、計(jì)算機(jī)視覺等領(lǐng)域的開源架構(gòu)。AForge.NET源代碼下的包含一個神經(jīng)網(wǎng)絡(luò)的類庫AForge.NET主頁 AForge.NET代碼:http Aforge.Neuro工程的類圖如下:10.AForge.Neuro類庫類下面介紹圖9中的幾個基本的類Neuron—神經(jīng)元的抽象基Layer—層的抽象基類,由多個神經(jīng)元組Network—神經(jīng)網(wǎng)絡(luò)的抽象基類,由多個層(Layer)IActivationFunction-激活函數(shù)(activationfunction)的接IUnsupervisedLearning無導(dǎo)師學(xué)習(xí)(unsupervisedlearning)算法的接口ISupervisedLearning有導(dǎo)師學(xué)習(xí)(supervisedlearning)算法的接口AforgeBP神經(jīng)網(wǎng)使用AForge建立BP神經(jīng)網(wǎng)絡(luò)會用到下面的幾個類<1SigmoidFunctionS形神經(jīng)網(wǎng)構(gòu)造函數(shù):publicSigmoidFunction(doublealpha參數(shù)alpha決定S形函數(shù)的陡峭程<2ActivationNetwork:神經(jīng)網(wǎng)絡(luò)類publicActivationNetwork(IActivationFunctionfunction,intinputsCount,paramsint[]neuronsCount):base(inputsCount,neuronsCount.Lengthpublicvirtualdouble[]Compute(double[]input參數(shù)意neuronsCount:表示各層神經(jīng)元個數(shù)<3>BackPropagationLearning:BP學(xué)習(xí)構(gòu)造函數(shù)publicBackPropagationLearning(ActivationNetworknetwork參數(shù)意義network:要訓(xùn)練的神經(jīng)網(wǎng)絡(luò)BackPropagationLearning類需要用戶設(shè)置的屬性有下面2個learningRate:學(xué)習(xí)momentum:沖量因下面給出一個用AForge構(gòu)建BP網(wǎng)絡(luò)的代碼改程序?qū)ris數(shù)據(jù)進(jìn)行分類,識別率可達(dá)97%左右創(chuàng)建一個多層神經(jīng)網(wǎng)絡(luò),采用S形激活函數(shù),各層分別有4,5,3個神經(jīng)元//(其中4是輸入個數(shù),3是輸出個數(shù),5是中間層結(jié)點(diǎn)個數(shù))ActivationNetworknetwork=newActivationNetwork(newSigmoidFuncton(2),4,5,//創(chuàng)建訓(xùn)練算法對BackPropagatonLearningteacher=newBackPropagatonLearning(network);//設(shè)置BP算法的學(xué)習(xí)率與沖量系teacher.LearningRate=teacher.Momentum=0;inttion=1;//迭代訓(xùn)練500while( ton<500{teacher.RunEpoch(trainInput,trainOutput) ton}//使用訓(xùn)練出來的神經(jīng)網(wǎng)絡(luò)來分類,t為輸入數(shù)據(jù)向AndrewKirillov.NeuralNetworksonC#. /KB/recipes/aforge_neuro.aspxSachaBarber.AI:NeuralNetworkforbeginners. /KB/recipes/NeuralNetwork_1.aspxRichardO.Duda,PeterE.HartandDavidG.Stork.模式分類.機(jī)械工業(yè).Wikipedia.Irisflowerdataset.參考 /heaad/archive/2011/03/07/ 下面一個歸一化和反歸一化的實(shí)例:參考: 0.16670.0023001750.0010.03786.140.650.3441.10.9920510320.310207290.3955003160.00420.18143.861.390.699330130.05760.3480.00560.21334.473.361.732571.21.0030.380.690.23290830.03740.45890.00310.2596811.221.0030.360.390380.75080.05920.11140.01740.1425.43.021526741.20.9940.360.260.38095140.0235025120.01110.15164.631.010.5881.120.9940.410.840.350.66130.01870.15940.03320.04616.20.780.391501080.9940.560.660.732440.02551.02250.00790.06914.731560.8040.410360290.47360.027500810.05440.28995.60.960531031.180.9930.420.822.25257420.3296091520.00530.28084.022.341.256.11.610020.51-0.790.87108970.04020.19050.0320.1643261.180.9960.450.280.430.66340.0204028440.02470.19875.3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論