?? mybp.m
字號:
function out=mybp()
clear all
N=16; %學(xué)習(xí)樣本個數(shù)(number)
In=4; %輸入層神經(jīng)元個數(shù)(Input number)
Hn=10; %隱層神經(jīng)元個數(shù)(Hidden number)
On=4; %輸出層神經(jīng)元個數(shù)(Output number)
times=800; %學(xué)習(xí)次數(shù)
eta_hi=0.9; %定義隱層到輸入層的學(xué)習(xí)速率
eta_oh=0.9; %定義輸出層到隱層的學(xué)習(xí)速率
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 主程序部分
fid = fopen('trainingdata.txt');
X= (fscanf(fid,'%g',[In N]))' %讀入待訓(xùn)練數(shù)據(jù)
fid = fopen('teacherdata.txt');
T= (fscanf(fid,'%g',[On N]))' %讀入期望輸出
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Whi=initw(In,Hn); %輸入層和隱層之間權(quán)值的初始化
Woh=initw(Hn,On); %隱層和輸出層之間權(quán)值的初始化
thh=initw(1,Hn); %隱層閾值初始化(threshold of hidden)
tho=initw(1,On); %輸出層閾值初始化(threshold of output)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%計(jì)算第n次迭代時的實(shí)際輸出%%%%%%%%%%%%%%%%
for m=1:times
E=0;
for n=1:N
temp1=X(n,:); %取出X第n行,即第n組學(xué)習(xí)樣本
Teacher=T(n,:); %讀入教師數(shù)據(jù)給Teacher
for j=1:Hn
temp2=Whi(:,j); %取出Whi第j列,即第j個神經(jīng)元所對應(yīng)的權(quán)值
net_h(j)=temp1*temp2+thh(j);
Y(j)=f1(net_h(j)); %求出隱層的輸出
end
for k=1:On
temp3=Woh(:,k); %取出Woh第k列,即第k個神經(jīng)元所對應(yīng)的權(quán)值
net_o(k)=Y*temp3+tho(k);
Z(k)=f2(net_o(k)); %求出輸出層的輸出
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=1:Hn
for k=1:On %輸出層到隱層的權(quán)值調(diào)整
delta_o(k)=(Teacher(k)-Z(k))*derif2(net_o(k));
delta_Woh(j,k)=eta_oh*delta_o(k)*Y(j);
end
end
for k=1:On,
delta_tho(k)=eta_oh*delta_o(k); %輸出層閾值的變化
end
for i=1:In %隱層到輸入層的權(quán)值調(diào)整
for j=1:Hn
sigma=0;
for k=1:On
sigma=sigma+Woh(j,k)*delta_o(k);
end
delta_h(j)=derif1(net_h(j))*sigma;
delta_Whi(i,j)=eta_hi*delta_h(j)*temp1(i);
end
end
for j=1:Hn
delta_thh(j)=eta_hi*delta_h(j); %隱層閾值的變化
end
Woh=Woh+delta_Woh; %更新輸出層到隱層的權(quán)值
Whi=Whi+delta_Whi; %更新隱層到輸出層的權(quán)值
tho=tho+delta_tho; %更新輸出層閾值
thh=thh+delta_thh; %更新隱層閾值
E=E+Err(Teacher,Z,On); %計(jì)算誤差
[temp1 Teacher Z Err(Teacher,Z,On)]
end
Error(m)=E;
end
out=plot(Error);
save W Woh Whi tho thh
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Programmed by XFX, Thanks for advice: fangxur@gmail.com
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -