数学建模社区-数学中国

标题: 自己编的神经网络程序不用工具箱的 [打印本页]

作者: 快到碗里来    时间: 2013-11-8 16:12
标题: 自己编的神经网络程序不用工具箱的
t=0:0.1:99.9;
y=ones(1,1000)*5;
w1=[0.12,0.3];     %初始化输入层隐含层连接权值
w2=[0.2,0.4];    %初始化隐含层与输出层连接权值
d1=[0.5,0.6];    %初始化隐含层阀值
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但是还是很兴奋


作者: sdccumcm    时间: 2013-11-9 00:06
不错啊~~~




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5