📄 bpjob.m
字号:
c=1;
d=1;
sample=zeros(21,1);
for p=0:0.001:1
y(c)=(sin(p*pi*2)+1)/2;
if mod(p,0.05)==0
sample(d,1)=y(c);
d=d+1;
end
c=c+1;
end
w1=rand(21,10);
w2=rand(21,10);
out1=zeros(21,10);
out2=zeros(21,1);
s1=zeros(21,10);
s2=zeros(21,1);
vv2=zeros(21,1);
vv1=zeros(21,10);
dd2=zeros(21,10);
dd1=zeros(21,10);
d=1;
sum=zeros(1001,1);
e=1;
for u=1:1000
hold off
d=1;
for i=0:0.05:1
for j=1:10
s1(d,j)=i*w1(d,j);
out1(d,j)=1/(exp((-1)*s1(d,j))+1); %第一层第j个神经元输出
end
temp =0;
for k=1:10
temp = temp+out1(d,k)*w2(d,k);
end
s2(d,1) = temp;
out2(d,1)=1/(exp((-1)*s2(d,1))+1); %第二层神经元输出
vv2(d,1)=out2(d,1)*(1-out2(d,1))*(sample(d,1)-out2(d,1)); %输出层的d
for b=1:10
dd2(d,b)=0.1*vv2(d,1)*out1(d,b); %输出层的修正 w
vv1(d,b)=vv2(d,1)*w2(d,b)*out1(d,b)*(1.00-out1(d,b));
dd1(d,b)=0.1*vv1(d,b)*i; %隐含层的修正 w
end
for j=1:10
w2(d,j)=w2(d,j)+dd2(d,j); %修正权值
w1(d,j)=w1(d,j)+dd1(d,j);
end
d=d+1;
end
d=1;
error=0;
for i=0:0.05:1
for j=1:10
s1(d,j)=i*w1(d,j);
out1(d,j)=1/(exp((-1)*s1(d,j))+1); %第一层第j个神经元输出
end
T1=0;
for k=1:10
T1=out1(d,k)*w2(d,k)+T1;
end
s2(d,1)=T1;
out2(d,1)=1/(exp((-1)*s2(d,1))+1);
error=error+(sample(d,1)-out2(d,1))*(sample(d,1)-out2(d,1));
plot(i,out2(d,1),'*g');
hold on
d=d+1;
end
sum(e,1)=error;
i=[0:0.05:1];
plot(i,out2,'g');
hold on
c=1;
d=1;
for p=0:0.001:1
y(c)=(sin(p*pi*2)+1)/2;
if mod(p,0.05)==0
sample(d,1)=y(c);
plot(p,sample(d,1),'*r');
hold on
d=d+1;
end
plot(p,y(c),'b');
c=c+1;
end
hold on
grid on
pause(0.001);
e=e+1;
end
figure
t=0:0.001:1;
plot(t,sum,'b');
hold on
grid on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -