自己编的神经网络程序不用工具箱的
t=0:0.1:99.9;
y=ones(1,1000)*5;
w1=; %初始化输入层隐含层连接权值
w2=; %初始化隐含层与输出层连接权值
d1=; %初始化隐含层阀值
d2=0.3; %初始化输出层阀值
u1=zeros(1,2); %初始化隐含层输入
a1=zeros(1,2); %初始化隐含层输出
e=zeros(1000); %初始化误差
r=0.1; %学习速率
for q=1:1:1000
for i=1:1:1000
u1(1)=w1(1)*t(i)-d1(1);
u1(2)=w2(2)*t(i)-d1(2);
a1(1)=1/(1+exp(-u1(1)));
a1(2)=1/(1+exp(-u1(2)));
out=a1(1)*w2(1)+a1(2)*w2(2)-d2;
e(i)=y(i)-out;
%%更新权值
w2(1)=w2(1)+r*a1(1)*e(i);
w2(2)=w2(2)+r*a1(2)*e(i);
w1(1)=w1(1)+r*a1(1)*(1-a1(1))*t(i)*w2(1)*e(i);
w1(2)=w1(2)+r*a1(2)*(1-a1(2))*t(i)*w2(2)*e(i);
%%更新阀值
d1(1)=d1(1)+0.1*a1(1)*(1-a1(1))*w2(1)*e(i);
d1(2)=d1(2)+0.1*a1(2)*(1-a1(2))*w2(2)*e(i);
end
end
t1=0:0.1:100.9
y1=zeros(1,1010);
for i=1:1:1010
u1(1)=w1(1)*t1(i)-d1(1);
u1(2)=w2(2)*t1(i)-d1(2);
a1(1)=1/(1+exp(-u1(1)));
a1(2)=1/(1+exp(-u1(2)));
out=a1(1)*w2(1)+a1(2)*w2(2)-d2;
y1(i)=out;
end
plot(t,y,t1,y1,'r');
虽然只能辨识y=C但是还是很兴奋
不错啊~~~
页:
[1]