RBF神经网络及其应用【神经网络】
RBF神經網絡典型案例分析
【例6-1】考慮具有3輸入2輸出的一組數據,如表6-1所示。
>> clear all; xite=0.10;alfa=0.05; W=rands(5,2); W_1=W;W_2=W_1; h=[0,0,0,0,0]'; c=2*[-0.5 -0.25 0 0.25 0.5;-0.5 -0.25 0 0.25 0.5;-0.5 -0.25 0 0.25 0.5]; b=10; xs=[1,0,0]; %樣本輸入 ys=[1,0]; %樣本輸出 OUT=2;NS=1; k=0;E=1.0; while E>=1e-20 k=k+1; times(k)=k; for s=1:1:NS %多輸入多輸出樣本 x=xs(s,:);RBF神經網絡的學習算法
RBF神經網絡的函數
newrb函數設計的RBF神經網絡net可以用于函數逼近。徑向基函數的擴展速度的值需要根據具體問題靈活選擇。對于變化較快的函數,如果spread的值取得過大就會使逼近結果過于粗糙;對于變化較慢的函數,如果spread的值取得過小就會使逼近結果不夠光滑,網絡的性能就會受到影響。
【例6-3】利用newrb函數創建一個近似RBF神經網絡。
程序實現代碼如下:
2)newrbe函數
newrbe函數用于設計一個準確的RBF神經網絡,函數的調用格式如下:
net = newrbe(P,T,spread)
其中,輸入參數P為輸入向量;T為輸出向量;spread為徑向基函數的分布密度,spread的值越大,函數越平滑,默認值為1.0。
一般來講,newrbe函數和newrb函數一樣,神經元數目越大,函數的擬合效果就越平滑。但是,過多的神經元可能會導致計算困難。
【例6-4】利用newrbe函數創建一個RBF神經網絡,注意與【例6-3】的區別。
程序實現代碼如下:
newpnn函數創建的是一個兩層的神經網絡:第一層是徑向基神經元,用dist函數計算加權輸入,用netprod函數計算網絡輸入;第二層是競爭神經元,用dotprod函數計算加權輸入,用netsum函數計算網絡輸入。其中,只有第一層包含閾值。網絡將第一層的值設置為P,第一層的閾值設置為0.8326/spread,并且當加權輸入為±spread時,徑向基函數取值恰好為0.5,第二層的權值被設置為T。
【例6-5】利用newpnn函數創建一個概率神經網絡。
程序實現代碼如下:
newgrnn函數用于創建一個廣義回歸神經網絡。廣義回歸神經網絡是RBF神經網絡的一種,通常用于函數逼近(請參考6.8節)。newgrnn函數的調用格式如下:
net = newgrnn(P,T,spread)
其中,輸入參數P為輸入向量;T為輸出向量;spread為徑向基函數的分布密度,spread的值對網絡的逼近精度有很大的影響,需要不斷地調整spread的值。spread的值越小,函數的比較越精確,但是逼近過程就越粗糙;spread的值越大,逼近過程越平滑,但是逼近的誤差會比較大。
【例6-6】利用newgrnn函數創建一個廣義回歸網絡。
程序實現代碼如下:
MATLAB神經網絡工具箱中提供的radbas函數用于實現RBF神經網絡的傳遞。radbas函數的調用格式如下:
A = radbas(N,FP)
其中,輸入參數N為S×Q維的網絡輸入(列向量)矩陣;FP為性能參數(可以忽略),返回網絡輸入向量N的輸出矩陣A。
【例6-7】計算向量的徑向基函數及其微分。
程序實現代碼如下:
2)vec2ind函數
vec2ind函數用于將向量組轉換為數據索引,與ind2vec函數是互逆的。vec2ind函數的調用格式如下:
[ind,n] = vec2ind(vec)
其中,vec為m×n的稀疏矩陣x,x中的每個向量i,除了包括1,其余元素均為0,得到的行向量包括這些非零元素的下標。
【例6-8】利用ind2vec函數與vec2ind函數實現網絡的轉換。
程序實現代碼如下:
權函數
info = dist(‘code’)
根據code值的不同,返回有關函數的信息。當code=deriv時,返回導函數名稱;當code=pfullderiv時,返回輸入向量;當code=wfullderiv時,返回權值;當code=name時,返回函數的全稱;當code=fpnames時,返回函數參數的名稱;當code=fpdefaults時,返回默認的函數參數。
【例6-9】利用dist函數計算兩個隨機矩陣的歐幾里得距離。
程序實現代碼如下:
2)normprod函數
normprod為規范點的權函數,函數的調用格式為:
Z = normprod(W,P,FP)
dim = normprod(‘size’,S,R,FP)
dw = normprod(‘dz_dw’,W,P,Z,FP)
其輸入參數的含義與dist函數參數的含義類似。其中,Z為返回的規范點積權。
【例6-10】利用normprod函數計算隨機矩陣的規范點積權。
程序實現代碼如下:
3)netprod函數
netprod為乘積網絡輸入函數,函數的調用格式如下:
N = netprod({Z1,Z2,…,Zn})
其中,輸入參數Zi為S×Q維的矩陣;Z為從Z1到Zn的組合;輸出參數N為從Z1到Zn的積。
info = netprod(‘code’)
根據code值的不同,返回有關函數的信息。當code=name時,返回傳遞函數的全稱;當code=deriv時,返回導函數名稱;當code=fullderiv時,返回導數的次數;當code=fpnames時,返回函數參數的名稱;當code=fpdefaults時,返回默認的函數參數。
【例6-11】利用netprod函數計算幾個矩陣中相應元素的積。
程序實現代碼如下:
4)dotprod函數
dotprod為矩陣的內權積函數,函數的調用格式如下:
Z = dotprod(W,P,FP)
dim = dotprod(‘size’,S,R,FP)
dw = dotprod(‘dw’,W,P,Z,FP)
info = dotprod(‘code’)
其輸入參數的含義與dist函數參數的含義類似。其中,Z為返回矩陣的內權積。
【例6-12】利用dotprod函數計算矩陣之間的內權積。
輸入函數
MATLAB神經網絡工具箱中提供的netsum函數用于計算網絡輸入,它可以將加權輸入與偏置相結合,求出輸入矩陣元素的和。netsum函數的調用格式如下:
N = netsum({Z1,Z2,…,Zn},FP)
其中,Z1,Z2,…,Zn等輸入參數是S×Q同型矩陣,函數將返回它們對應位置元素的和;N為與輸入矩陣同型的矩陣。
info = netsum(‘code’)
根據code值的不同,返回有關函數的信息。當code=name時,返回函數的全稱;當code=type時,返回函數的類型;當code=fpnames時,返回函數參數的名稱;當code=fpdefaults時,返回默認的函數參數;當code=fullderiv時,返回0或1,這取決于S×Q矩陣。
【例6-13】利用netsum函數計算網絡輸入函數和。
程序實現代碼如下:
競爭傳遞函數
compet為神經網絡的競爭傳遞函數,傳遞函數用于從網絡中求得網絡輸出。compet函數的調用格式如下:
A = compet(N,FP)
其中,N為S×Q維矩陣,包含Q個長度為S的列向量,對每個列向量分別求最大值,返回同型矩陣A,在每列的最大值對應位置,A中的元素為1,其余元素為0,A的每列中有且僅有一個元素等于1;FP為返回函數參數的結構。
可以用n給網絡的第i層設置傳遞函數,下面舉例說明。
【例6-14】計算一個向量的網絡輸出。
程序實現代碼如下:
總結
以上是生活随笔為你收集整理的RBF神经网络及其应用【神经网络】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “7天”连锁酒店郑南雁
- 下一篇: con 元器件符号_protues的元件