马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
在这个神经网络里,输入向量和输出向量相同,通过多层BP神经网络,可以找出这些变量之间的内在关系。在这个例子里,向量各变量都是时间t的函数,通过这个神经网络可以把这个隐藏变量找出来并表示出来。
这个程序用到了神经网络的一些基本功能,供大家参考。-
- clear all;
- t=1:0.001:1.3;
- for i=302:600
- t(i)=1.6-0.001*i;
- end
- y=[t.*t+0.05;2*t;t.^3-1;5*t+0.2]; %用时间变量t构造向量y
- y01=y./mean(mean(y)); %数据归一化
- y01=y01./4;
- noise=rand(4,600).*mean(mean(y01)).*0.01; %噪声
- input=y01+noise;
- output=input;
- net=newff([0 1;0 1;0 1;0 1],[10 1 10 4],{'tansig' 'tansig' 'tansig' 'tansig'},'trainlm'); %构造神经网络
- net.trainparam.goal=1e-6;
- net.trainparam.epochs=5000;
- [net,tr]=train(net,input,output); %训练神经网络
- %以下输出环境变量
- for i=1:600
- b01(:,i)=net.b{1};
- end
- t01=tansig(net.iw{1,1}*input+b01);
- for i=1:600
- b02(:,i)=net.b{2};
- end
- t02=tansig(net.lw{2,1}*t01+b02); %t02即是通过神经网络找出的隐藏变量
- plot(-t02);
- %后处理
- yy=sim(net,input);
- com=yy-input;
- te=sum(sum(com.^2))/2400; %误差
复制代码
[ 本帖最后由 jt1937 于 2008-7-13 15:10 编辑 ] |