?? bp.m
字號:
A=[1.40,1.80,3.70;4.28,4.96,1.31;1.18,4.29,3.35;1.96,1.90,2.70;1.85,1.43,3.52;3.36,1.60,2.46;3.64,2.14,1.95;4.51,1.52,2.51;3.77,1.45,2.70;4.84,4.32,1.33;1.05,2.55,4.63;4.51,1.37,2.80;1.84,4.43,1.97;1.67,2.81,2.47;2.03,1.88,2.66;3.62,1.95,2.08;1.67,2.23,2.75;3.38,3.70,1.51;2.83,3.70,1.60;1.48,4.44,2.44;3.37,2.13,1.99;2.84,1.24,3.42;1.19,1.53,4.99;4.10,1.71,2.27;1.65,1.38,3.94;2.00,2.06,2.52;2.71,4.13,1.58;1.78,1.11,4.71;3.63,2.27,1.87;2.24,3.74,1.79;1.81,3.18,2.20;4.85,4.66,1.30;3.41,3.88,1.48;1.38,2.55,3.14;2.46,2.12,2.22;2.66,4.42,1.56;4.44,4.71,1.32;3.11,1.06,4.08;4.47,3.66,1.42;1.35,1.76,3.91;1.24,1.41,5.05;2.81,1.35,1.97;1.92,4.25,1.92;4.61,2.68,1.63;3.04,4.97,1.44;4.82,3.80,1.39;2.58,1.97,2.29;4.14,4.76,1.33;4.35,3.90,1.40;2.22,1.35,3.39]';
b0=rand(1);%輸出層閾值
p=4*rand(2,200);
p=ones(size(p))+p;%輸入樣本
w1=rand(5,2);%輸入層到隱層權值
w2=rand(1,5);%隱層到輸出層權值
w0=[0 0 0 0 0]';%隱層閾值
for j=1:1500
sum=0;
if j<1000
r=0.6;
else
r=0.4;
end
for t=1:50
x1(t)=A(1,t)/5;
x2(t)=A(2,t)/5;
x=[x1(t);x2(t)];
d=(1+(x(1)*5)^(-2)+(x(2)*5)^(-1.5))^2;
for i=1:5
u1(i)=1/(1+exp(-w1(i,1)*x(1)-w1(i,2)*x(2)+w0(i)));
end
o=[u1(1);u1(2);u1(3);u1(4);u1(5)];
y=w2*o-b0;
e1(t)=A(3,t)-y;
delta1=e1(t);
b0=b0-r*delta1;
for i=1:5
delta(i)=delta1*o(i)*(1-o(i))*w2(i);
end
delta=[delta(1);delta(2);delta(3);delta(4);delta(5)];
for i=1:5
w0(i)=w0(i)-r*delta(i);
end
w0=[w0(1) w0(2) w0(3) w0(4) w0(5)]';
for i=1:5
w1(i,1)=w1(i,1)+r*delta(i)*x(1);
w1(i,2)=w1(i,2)+r*delta(i)*x(2);
end
w1=[w1(1,1) w1(1,2);w1(2,1) w1(2,2);w1(3,1) w1(3,2);w1(4,1) w1(4,2);w1(5,1) w1(5,2)];
w2=w2+r*delta1*o';
sum=sum+e1(t)*e1(t);
end
R(j)=sum/100;
end
p=4*rand(2,20);
C=ones(size(p))+p+0.1*ones(size(p))
sum=0;
sum1=0;
for t=1:20
x1(t)=C(1,t)/5;
x2(t)=C(2,t)/5;
x=[x1(t);x2(t)];
d=(1+(x(1)*5)^(-2)+(x(2)*5)^(-1.5))^2
for i=1:5
u1(i)=1/(1+exp(-w1(i,1)*x(1)-w1(i,2)*x(2)+w0(i)));
end
o=[u1(1);u1(2);u1(3);u1(4);u1(5)];
y1=w2*o-b0;
e5(t)=d-y1;
sum=sum+e5(t);
sum1=sum1+e5(t)^2;
end
max=0;
for i=1:20
if abs(max)<abs(e5(i))
max=e5(i);
end
end
w1
w2
w0
b0
max
E=sum/20
S=sqrt(sum1/20)
subplot(2,1,1);plot(e5);
xlabel('檢驗數據個數');
ylabel('誤差');
title('檢驗誤差曲線');
grid;
subplot(2,1,2);plot(R);
xlabel('計算次數T');
ylabel('平均誤差');
grid;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -