?? bp_example2.m
字號(hào):
%--------------------------------------------------------------------------
% 利用兩層BP網(wǎng)絡(luò)完成函數(shù)逼近,其中隱層的神經(jīng)元個(gè)數(shù)選為5個(gè)
%
% initff—對(duì)前向網(wǎng)絡(luò)初始化
% simuff—對(duì)前向網(wǎng)絡(luò)仿真
% trainbp--用BP算法訓(xùn)練前向網(wǎng)絡(luò)
%--------------------------------------------------------------------------
clf; % 從當(dāng)前圖形窗口刪除所有圖形對(duì)象,恢復(fù)圖形窗口屬性的默認(rèn)設(shè)置
figure(gcf); % gcf--獲得當(dāng)前圖形窗口的句柄
% set(gcf,300,300);
% set(gcf, 'PaperPosition', [2 1 4 2]);
echo on; % 允許在屏幕上顯示批處理命令行
clc;
p=-1:0.1:1; % p為輸入矢量
t=[-0.9602 -0.577 -0.0729 0.3771 0.6405 0.66 0.4609...
0.1336 -0.2013 -0.4344 -0.5 -0.393 -0.1647 0.0988...
0.3072 0.396 0.3449 0.1816 -0.0312 -0.2189 -0.3201]; % t為目標(biāo)矢量
plot(p,t,'+','linewidth',2,'markersize',14);
title('Training Vectors','fontsize',24,'fontweight','bold');
xlabel('Input Vector P','fontsize',24,'fontweight','bold');
ylabel('Target Vector T','fontsize',24,'fontweight','bold');
pause;
clc;
S1=5;
[w1,b1,w2,b2]=initff(p,S1,'tansig',t,'purelin'); % 初始化神經(jīng)元,w是權(quán)值,b是閾值
echo off;
k=pickic(1);
if k==2
w1=[3.5; 3.5; 3.5; 3.5; 3.5];
b1=[-2.8562; 1.0774; -0.588; 1.4083; 2.8722];
w2=[0.2622 -0.2375 -0.4525 0.2361 -0.1718];
b2=[0.1326];
end
echo on;
clc;
disp_freq=20; % 學(xué)習(xí)過(guò)程顯示頻率
max_epoch=8000; % 最大訓(xùn)練步數(shù)
err_goal=0.02; % 誤差指標(biāo)
lr=0.01; % 學(xué)習(xí)率
tp=[disp_freq max_epoch err_goal lr];
[w1,b1,w2,b2,epochs,tr]=trainbp(w1,b1,'tansig',w2,b2,'purelin',p,t,tp); % 用BP算法訓(xùn)練前向網(wǎng)絡(luò)
pause;
clc;
p=0.5; % 利用訓(xùn)練完的感知器神經(jīng)元進(jìn)行分類(lèi)
% p=0.5時(shí),理想輸出值=0.396
a=simuff(p,w1,b1,'tansig',w2,b2,'purelin') % 對(duì)輸入矢量預(yù)處理
pause;
clc;
ploterr(tr,eg); % 畫(huà)出誤差曲線(xiàn)
echo off;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -