資源描述:
《BP神經(jīng)網(wǎng)絡matlab實現(xiàn)基本步驟》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、1、數(shù)據(jù)歸一化2、數(shù)據(jù)分類,主要包括打亂數(shù)據(jù)順序,抽取正常訓練用數(shù)據(jù)、變量數(shù)據(jù)、測試數(shù)據(jù)3、建立神經(jīng)網(wǎng)絡,包括設置多少層網(wǎng)絡(一般3層以內既可以,每層的節(jié)點數(shù)(具體節(jié)點數(shù),尚無科學的模型與公式方法確定,可采用試湊法,但輸出層的節(jié)點數(shù)應與需要輸出的量個數(shù)相等),設置隱含層的傳輸函數(shù)等。關于網(wǎng)絡具體建立使用方法,在后幾節(jié)的例子中將會說到。4、指定訓練參數(shù)進行訓練,這步非常重要,在例子中,將詳細進行說明5、完成訓練后,就可以調用訓練結果,輸入測試數(shù)據(jù),進行測試6、數(shù)據(jù)進行反歸一化7、誤差分析、結果預測或分類,作圖等數(shù)據(jù)歸一化問題歸
2、一化的意義:首先說一下,在工程應用領域中,應用BP網(wǎng)絡的好壞最關鍵的仍然是輸入特征選擇與訓練樣本集的準備,若樣本集代表性差、矛盾樣本多、數(shù)據(jù)歸一化存在問題,那么,使用多復雜的綜合算法、多精致的網(wǎng)絡結構,建立起來的模型預測效果不會多好。若想取得實際有價值的應用效果,從最基礎的數(shù)據(jù)整理工作做起吧,會少走彎路的。歸一化是為了加快訓練網(wǎng)絡的收斂性,具體做法是:1把數(shù)變?yōu)椋?,1)之間的小數(shù)主要是為了數(shù)據(jù)處理方便提出來的,把數(shù)據(jù)映射到0~1范圍之內處理,更加便捷快速,應該歸到數(shù)字信號處理范疇之內。2把有量綱表達式變?yōu)闊o量綱表達式歸一化
3、是一種簡化計算的方式,即將有量綱的表達式,經(jīng)過變換,化為無量綱的表達式,成為純量比如,復數(shù)阻抗可以歸一化書寫:Z=R+jωL=R(1+jωL/R),復數(shù)部分變成了純數(shù)量了,沒有量綱。另外,微波之中也就是電路分析、信號系統(tǒng)、電磁波傳輸?shù)?,有很多運算都可以如此處理,既保證了運算的便捷,又能凸現(xiàn)出物理量的本質含義。神經(jīng)網(wǎng)絡歸一化方法:由于采集的各數(shù)據(jù)單位不一致,因而須對數(shù)據(jù)進行[-1,1]歸一化處理,歸一化方法主要有如下幾種,供大家參考:1、線性函數(shù)轉換,表達式如下:復制內容到剪貼板代碼:y=(x-MinValue)/(MaxVa
4、lue-MinValue)說明:x、y分別為轉換前、后的值,MaxValue、MinValue分別為樣本的最大值與最小值。2、對數(shù)函數(shù)轉換,表達式如下:復制內容到剪貼板代碼:y=log10(x)說明:以10為底的對數(shù)函數(shù)轉換。3、反余切函數(shù)轉換,表達式如下:復制內容到剪貼板代碼:y=atan(x)*2/PImatlab中歸一化的實現(xiàn):matlab中的歸一化處理有五種方法,只會其中一種就可以了,我喜歡用第4種,因為習慣與方便注意:第一組與第二組歸一化函數(shù)在Matlab7.0以上已遺棄,他們的用法相似,pre**是歸一化,pos
5、t**是反歸一化,tram**是使用同樣的設置歸一化另外一組數(shù)據(jù)1.內部函數(shù)premnmx、postmnmx、tramnmx,將數(shù)據(jù)歸一化到(-1,1)premnmx的語法格式是復制內容到剪貼板代碼:[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T)其中P,T分別為原始輸入與輸出數(shù)據(jù),minp與maxp分別為P中的最小值與最大值。mint與maxt分別為T的最小值與最大值。我們在訓練網(wǎng)絡時,如果所用的是經(jīng)過歸一化的樣本數(shù)據(jù),那么以后使用網(wǎng)絡時所用的新數(shù)據(jù)也應該與樣本數(shù)據(jù)接受相同的預處理,這就要用
6、到tramnmx,換句話說使用同一個歸一化設置(setting)歸一化另外一組數(shù)據(jù)。如下所示:復制內容到剪貼板代碼:[Pn]=tramnmx(P,minp,maxp)其中P與Pn分別為變換前、后的輸入數(shù)據(jù),maxp與minp分別為premnmx函返回的最大值maxp與最小值minp。2、prestd、poststd、trastd歸化數(shù)據(jù)到(0,1)用法與1差不多。詳細可以helpprestd。上述兩種方法是可以相互轉化的,比如,第一種歸化后的數(shù)據(jù)為p,則(1+p)./2的結果就是第二種了3、mapminmax()將數(shù)據(jù)歸一化
7、到(-1,1),是6.5中**mnmx系列的替換函數(shù)該函數(shù)同時可以執(zhí)行歸一化、反歸一化與歸一化其他數(shù)據(jù)的功能,具體看幫助與后面的實例復制內容到剪貼板代碼:%歸一化數(shù)據(jù)輸入為p,輸出為t[normInput,ps]=mapminmax(p);[normTarget,ts]=mapminmax(t);%反歸一化trainOutput=mapminmax('reverse',normTrainOutput,ts);trainInsect=mapminmax('reverse',trainSamples.T,ts);validate
8、Output=mapminmax('reverse',normValidateOutput,ts);validateInsect=mapminmax('reverse',validateSamples.T,ts);testOutput=mapminmax('reverse',normTes