matlab RBF 神经网络拟合
(1)newrb()
https://www.mathworks.com/help/deeplearning/ref/newrb.html
該函數可以用來設計一個近似徑向基網絡(approximate RBF)。調用格式為:
[net,tr]=newrb(P,T,GOAL,SPREAD,MN,DF)
其中P為Q組輸入向量組成的R*Q位矩陣,T為Q組目標分類向量組成的S*Q維矩陣。GOAL為均方誤差目標(Mean Squard Error Goal),默認為0.0;SPREAD為徑向基函數的擴展速度,默認為1;MN為神經元的最大數目,默認為Q;DF維兩次顯示之間所添加的神經元數目,默認為25;ner為返回值,一個RBF網絡,tr為返回值,訓練記錄。
用newrb()創建RBF網絡是一個不斷嘗試的過程(從程序的運行可以看出來),在創建過程中,需要不斷增加中間層神經元的和個數,知道網絡的輸出誤差滿足預先設定的值為止。
(2)newrbe()
https://www.mathworks.com/help/deeplearning/ref/newrbe.html
該函數用于設計一個精確徑向基網絡(exact RBF),調用格式為:
net=newrbe(P,T,SPREAD)
其中P為Q組輸入向量組成的R*Q維矩陣,T為Q組目標分類向量組成的S*Q維矩陣;SPREAD為徑向基函數的擴展速度,默認為1
和newrb()不同的是,newrbe()能夠基于設計向量快速,無誤差地設計一個徑向基網絡。
(3)radbas()
該函數為徑向基傳遞函數,調用格式為
A=radbas(N)
info=radbas(code)
其中N為輸入(列)向量的S*Q維矩陣,A為函數返回矩陣,與N一一對應,即N的每個元素通過徑向基函數得到A;info=radbas(code)表示根據code值的不同返回有關函數的不同信息。包括
derive——返回導函數的名稱
name——返回函數全稱
output——返回輸入范圍
active——返回可用輸入范圍
使用exact徑向基網絡來實現非線性的函數回歸:
%%清空環境變量 clc clear %%產生輸入輸出數據 %設置步長 interval=0.01; %產生x1,x2 x1=-1.5:interval:1.5; x2=-1.5:interval:1.5; %按照函數先求的響應的函數值,作為網絡的輸出 F=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2); %%網絡建立和訓練 %網絡建立,輸入為[x1;x2],輸出為F。spread使用默認 net=newrbe([x1;x2],F); %%網絡的效果驗證 %將原數據回帶,測試網絡效果 ty=sim(net,[x1;x2]); %%使用圖像來看網絡對非線性函數的擬合效果 figure plot3(x1,x2,F,'rd'); hold on;plot3(x1,x2,ty,'b-.'); view(113,36); title('可視化的方法觀察嚴格的RBF神經網絡的擬合效果'); xlabel('x1') ylabel('x2') zlabel('F') grid onapproximate RBF網絡對函數進行擬合
%%清空環境變量 clc clear %%產生訓練樣本,訓練輸入,訓練輸出 %ld為樣本隸屬 ld=400; %產生2*ld的矩陣 x=rand(2,ld); %將x轉換到[-1.5 1.5]之間 x=(x-0.5)*1.5*2; %x的第一行為x1,第二行為x2 x1=x(1,:); x2=x(2,:); %計算網絡輸出F值 F=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2); %%建立RBF神經網絡 %采用approximate RBF神經網絡,spread為默認值 net=newrb(x,F); %%建立測試樣本 interval=0.1; [i,j]=meshgrid(-1.5:interval:1.5); row=size(i); tx1=i(:); tx1=tx1'; tx2=j(:); tx2=tx2'; tx=[tx1;tx2];%%使用建立的RBF網絡進行模擬,得出網絡輸出 ty=sim(net,tx); %%使用圖像,畫出三維圖 %真正的函數圖像 interval=0.1; [x1,x2]=meshgrid(-1.5:interval:1.5); F=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2); subplot(1,3,1); mesh(x1,x2,F); zlim([0,60]); title('真正的函數圖像'); %網絡得出的函數圖像 v=reshape(ty,row); subplot(1,3,2); mesh(i,j,v); zlim([0,60]); title('RBF神經網絡結果'); %誤差圖像 subplot(1,3,3); mesh(x1,x2,F-v); zlim([0,60]); title('誤差圖像'); set(gcf,'position',[300,250,900,400])結論:可以看出神經網絡的訓練結果能夠較好逼近該非線性函數F,由誤差圖可知,實景網絡的預測效果在數據邊緣處的誤差較大,在其它書指出的擬合效果很好,網絡的輸出值與函數值之間的插值在隱藏層神經元的個數為100時已經接近0,說明網絡輸出能非常好地逼近函數。
?
總結
以上是生活随笔為你收集整理的matlab RBF 神经网络拟合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB基本语法 初学者
- 下一篇: windows Pycharm 常用快捷