?? bpnetwork.m
字號:
% 利用BP網絡實現函數逼近
clear
% NEWFF--生成一個新的前向神經網絡
%TRAIN---對BP網絡進行訓練
% SIM----對BP網絡進行仿真
clc
%定義訓練樣本矢量
%P為輸入矢量
P=[-1:0.05:1];
%T為目標矢量
T= sin(2*pi*P)+3*cos(2*pi*P);
%對訓練數據進行歸一化處理
[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T);
clc
%創建BP神經網絡
net=newff(minmax(Pn),[15 1],{'tansig','purelin'},'trainbr');
clc
% 設置訓練參數
net.performFcn='sse';
net.trainParam.goal=0.0001;
net.trainParam.show=1;
net.trainParam.epochs=15;
net.trainParam.Mu_max=1e-5;
net.trainParam.min_grad=1e-16;
% net.trainParam.mc=0.95;
net.trainParam.mem_reduc=1;
% 重新初始化網絡
net=init(net);
% 對BP神經網絡進行訓練
[net,tr]=train(net,Pn,Tn);
% 對BP神經網絡進行仿真分析
Yn=sim(net,Pn);
% 恢復被歸一化的數據
[Y]=postmnmx(Yn,mint,maxt);
%計算均方誤差
E=T-Y;
MSE=mse(E);
clc
%畫圖描繪仿真結果
figure;
plot(P,T,'r+',P,Y,'b-');
axis([-1 1 -5 5]);
title('BP神經網絡的函數逼近結果');
xlabel('輸入');
ylabel('輸出');
legend('訓練樣本數據','神經網絡仿真',1);
grid on;
%用未經訓練的數據對訓練成功的BP網絡進行驗證測試
p1=[-0.9:0.3:0.9];
t1=sin(2*pi*p1)+3*cos(2*pi*p1);
%對測試數據進行歸一化處理
%tramnmx:利用預先計算的最大和最小值對數據進行變換
p1n=tramnmx(p1,minp,maxp);
%對變換后的測試數據進行仿真
yn=sim(net,p1n);
% 將仿真結果還原成原始數據
[y]=postmnmx(yn,mint,maxt);
figure;
plot(p1,t1,'r+');
hold on;
plot(p1,y,'b.');
axis([-1 1 -5 5]);
title('BP神經網絡的函數逼近結果檢驗');
xlabel('輸入');
ylabel('輸出');
legend('測試樣本數據','神經網絡仿真',1);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -