資源簡介
遺傳算法是利用謝菲爾德工具箱,神經網絡工具箱是matlab自帶的,優化初始網絡權值

代碼片段和文件信息
function?err=Bpfun(xPThiddennumP_testT_test)
%%?訓練&測試BP網絡
%%?輸入
%?x:一個個體的初始權值和閾值
%?P:訓練樣本輸入
%?T:訓練樣本輸出
%?hiddennum:隱含層神經元數
%?P_test:測試樣本輸入
%?T_test:測試樣本期望輸出
%%?輸出
%?err:預測樣本的預測誤差的范數
inputnum=size(P1);???????%?輸入層神經元個數
outputnum=size(T1);??????%?輸出層神經元個數
%%?新建BP網絡
net=newff(minmax(P)[hiddennumoutputnum]{‘tansig‘‘logsig‘}‘trainlm‘);
%%?設置網絡參數:訓練次數為1000,訓練目標為0.01,學習速率為0.1
net.trainParam.epochs=1000;
net.trainParam.goal=0.01;
LP.lr=0.1;
net.trainParam.show=NaN;
%?net.trainParam.showwindow=false;??%高版MATLAB
%%?BP神經網絡初始權值和閾值
w1num=inputnum*hiddennum;?%?輸入層到隱層的權值個數
w2num=outputnum*hiddennum;%?隱層到輸出層的權值個數
w1=x(1:w1num);???%初始輸入層到隱層的權值
B1=x(w1num+1:w1num+hiddennum);??%初始隱層閾值
w2=x(w1num+hiddennum+1:w1num+hiddennum+w2num);?%初始隱層到輸出層的閾值
B2=x(w1num+hiddennum+w2num+1:w1num+hiddennum+w2num+outputnum);?%輸出層閾值
net.iw{11}=reshape(w1hiddennuminputnum);
net.lw{21}=reshape(w2outputnumhiddennum);
net.b{1}=reshape(B1hiddennum1);
net.b{2}=reshape(B2outputnum1);
%%?訓練網絡以
net=train(netPT);
%%?測試網絡
Y=sim(netP_test);
err=norm(Y-T_test);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????404??2010-11-14?00:49??Objfun.m
?????文件???????1282??2010-11-14?00:48??BPfun.m
?????文件???????1864??2011-03-31?19:30??callbackfun.m
?????文件???????2307??2010-12-12?19:16??GABPMain.m
?????文件???????1607??2010-12-09?10:05??data.mat
-----------?---------??----------?-----??----
?????????????????7464????????????????????5
評論
共有 條評論