神經網路新舊版本newff比較

2022-08-23 11:45:09 字數 3026 閱讀 6325

**

使用matlab工具箱建立神經網路時,需要用到newff函式,但若使用舊版本的newff函式,會出現下面的警告:

>> net = newff( minmax(input) , [10 3] , , 'traingdx') ; %舊版本

warning: newff used in an obsolete way. 

一、新舊版本newff函式差異和解決方法:

這種警告是由於使用舊版本的newff引數列表,解決方法很簡單,就是改為新版本形式引數列表:

net = newff( minmax(input) , [10

3] , , '

traingdx

') ; %舊版本

net2 = newff( input,output'

, [10] , ,

'traingdx'

) ; %新版本

說明:舊版本中第乙個引數需要結合minmax()函式使用,新版本不需要了;新版本中不需要指定輸出層的神經元個數,改為由輸入引數output決定,其他引數不變。

這是新舊版本建立神經網路的方法,但存在另外乙個問題,即使相同的資料和引數下,新舊版本的計算結果總是不一樣,而且二者偏差很大,通常新版本的newff方法的識別率總是偏低。

網上找了一些原因:newff.m分成三大塊:主程式、新版實現子函式 new_5p1()、舊版實現子函式 new_5p0()。通過仔細比較新舊這兩個子函式,發現新版設定了net.dividefcn 屬性,其值為'dividerand'。該函式把樣本資料三分為訓練集、驗證集和測試集,預設比例是6:2:2。

若想減少新舊版本之間的差異,需要清除net2.dividefcn等屬性再訓練,否則結果相去甚遠,且遠不止乙個數量級。因此,解決新舊版本newff之間差異的方法,是在新版中net2中再新增一條語句:

net2.dividefcn = '';

二、新版newff函式引數說明:

(1)net=newff(p,t,s)或者net = newff(p,t,s,tf,btf,blf,pf,ipf,opf,ddf)

p:輸入引數矩陣。(rxq1),其中q1代表r元的輸入向量。其資料意義是矩陣p有q1列,每一列都是乙個樣本,而每個樣本有r個屬性(特徵)。一般矩陣p需要歸一化,即p的每一行都歸一化到[0 1]或者[-1 1]。

t:目標引數矩陣。(snxq2),q2代表sn元的目標向量。

s:n-1個隱含層的數目(s(i)到s(n-1)),預設為空矩陣。輸出層的單元數目sn取決於t。返回n層的前饋bp神經網路

tf:相關層的傳遞函式,預設隱含層為tansig函式,輸出層為purelin函式。

btf:bp神經網路學習訓練函式,預設值為trainlm函式。

blf:權重學習函式,預設值為learngdm。

pf:效能函式,預設值為mse。

ipf,opf,ddf均為預設值即可。

如:

net = newff( minmax(traindata) , [50

4] , , '

traingdx

' ) ;%舊版本

ps:其中traindata:是輸入的訓練的資料矩陣,注意traindata矩陣形式每一列是乙個樣本,每一行是樣本的屬性或特徵

net = newff( input,output, [50] , , '

traingdx

' ) ; %新版本

(2)傳遞函式

purelin 線性傳遞函式

tansig 正切 s 型傳遞函式

logsig 對數 s 型傳遞函式

隱含層和輸出層函式的選擇對bp神經網路**精度有較大影響,一般隱含層節點轉移函式選用 tansig函式或logsig函式,輸出層節點轉移函式選用tansig函式或purelin函式。

(3)學習訓練函式

神經網路的學習分為有導師學習和無導師學習。

最速下降bp演算法:traingd

動量bp演算法:traingdm

學習率可變的bp演算法:trainda(學習率可變的最速下降bp演算法);traindx(學習率可變的動量bp演算法)

彈性演算法:trainrp

變梯度演算法:traincgf(fletcher-reeves修正演算法)

traincgp(polak_ribiere修正演算法)

traincgb(powell-beale復位演算法)

trainbfg(bfgs 擬牛頓演算法)

trainoss(oss演算法)

trainlm(lm演算法)

引數說明:通過net.trainparam可以檢視引數

show training window feedback   showwindow: true

show command line feedback showcommandline: false

command line frequency            show: 兩次顯示之間的訓練次數

maximum epochs                   epochs: 訓練次數

maximum training time              time: 最長訓練時間(秒)

performance goal                      goal: 網路效能目標

minimum gradient                  min_grad: 效能函式最小梯度

maximum validation checks         max_fail: 最大驗證失敗次數

learning rate                           lr: 學習速率

learning rate increase              lr_inc: 學習速率增長值

learning rate                       lr_dec: 學習速率下降值

maximum performance increase  max_perf_inc:

momentum constant                       mc: 動量因子

ABP的新舊版本選型

abp是乙個開源的應用程式框架asp.net基於核心的web應用程式開發,也支援開發其他型別的應用程式。對舊版本的重寫,基於asp.net core,主要定位微服務 base class for crud services asp.net樣板 boilerplate,abp 是乙個開源的 有良好文件...

pyecharts的新舊版本用法區別

簡介特性 版本v0.5.x 和 v1 間不相容,v1 是乙個全新的版本,詳見 issue 892,issue 1033。舊版本 5.x 版本將不再進行維護,0.5.x 版本 位於 05x 分支 新版本 新版本系列將從 v1.0.0 開始,文件位於 pyecharts.org 安裝 pip 安裝 安裝...

matlab BP神經網路 newff

net newff p,t,s 這兩種定義都可以 net newff p,t,s,tf,btf,blf,pf,ipf,opf,ddf p 輸入引數矩陣。rxq1 其中q1代表r元的輸入向量。其資料意義是矩陣p有q1列,每一列都是乙個樣本,而每個樣本有r個屬性 特徵 一般矩陣p需要歸一化,即p的每一行...