自己写的BP神经网络拟合曲线的例子
本帖最后由 hbgskick 于 2010-7-6 01:44 编辑这个简单的程序是为了了解下BP网络对多次曲线的拟合能力,来看看其能力到底如何.
clc
clear
p=-1:0.1:1;
t=[-0.96 -0.577 -0.0729 0.377 0.641 0.66 0.461 0.1336 -0.201 -0.434 -0.5 -0.393 -0.1647 0.0988 0.3072 0.396 0.3449 0.1816 -0.0312 -0.2183 -0.3201];
%输入数据,为任意一高次曲线上所取的21个点,为图中的红点
net=newff(minmax(p),,{'tansig','logsig','purelin'},'traingd'); %采用三层神经网络
net.trainParam.epochs=1000; %训练次数,本例分别取了1000,5000,10000三种
net.trainParam.goal=9.5238e-0016;%误差目标
net.trainParam.lr=0.2 %学习速率,不宜过大,否则发散
%net.iw{1,1}=[ 6.9425 -7.0343 6.9925 -6.9994 7.0521]'; %初始权值,可以设定初始值直接使用
%net.lw{2,1}=;
%net.b{1,1}=[-7.0574 3.4264 0.0017 -3.4974 6.9461]'; %初始偏置值
%net.b{2,1}=
=train(net,p,t); %训练网络
y=sim(net,p); %用训练好网络计算
plot(p,t,'ro')
plot(p,t,'ro',p,y)
xlabel('输入值');ylabel('输出值');
legend('原始数据','训练1000次');
以上是修改训练次数对网络精度的影响,同时可以适当修改网络的学习速率,提高网络的收敛速度。对于已经训练好的网络,还可以保存其权值和偏置值,如程序中net.iw{1,1}和net.b{1,1},以便下次可以直接调用。 举例子最好将来龙去脉交带清楚。比如就本例而论,需要拟合的模型、拟合后的模型,以及最后的结果(最好有图),即lz提到的“来看看其能力到底如何“,都写一下就最好了,这样的加分也会多一些。 谢谢版主意见! 本帖最后由 lengyunfeng 于 2010-7-20 07:41 编辑
请问我的数据X=
Y=怎么按你的方法进行拟合,得到你的效果行不? 本帖最后由 hbgskick 于 2010-8-4 10:29 编辑
对于你这组数据需要先归一化,如下:
clc
clear
X=;%输入
Y=;%输出
=premnmx(X,Y);%归一化
p=Pn;
t=Tn;
net=newff(minmax(p),,{'tansig','logsig','purelin'},'traingd');
net.trainParam.epochs=1000;
net.trainParam.goal=9.5238e-0016;
net.trainParam.lr=0.2
%net.iw{1,1}=[ 6.9425 -7.0343 6.9925 -6.9994 7.0521]';
%net.lw{2,1}=;
%net.b{1,1}=[-7.0574 3.4264 0.0017 -3.4974 6.9461]';
%net.b{2,1}=
=train(net,p,t);
y=sim(net,p);
plot(p,t,'ro')
plot(p,t,'ro',p,y)
xlabel('输入值');ylabel('输出值');
legend('原始数据','训练1000次'); 请教一下楼主 学习速率在什么范围之内比较合适? 学习速率没有一定的标准,一般的只要你训练的时候误差是收敛的就行了。一般的情况下,如果不收敛的话,你就需要调整学习速率,适当的减小。我看到一些书上建议不要大于0.4的,忘了是那本书了。但我觉得一般视情况而定,如果数据不多,用不了多长时间,还是把速率调小些为好,这样不会跳过一些收敛域。
当然,你也可以试试自适应的速率,或附加惯动量法。 我一直有一个疑问,就是神经网络对曲线进行拟合后能不能得到曲线的近似表达式呢?如果不能的话,这种拟合有什么意义呢? 是啊,我也有这样的疑问,这样拟合出来,有什么用呢?
麻烦lz给解释一下,谢谢了 可以的
权值和阀值、转换函数,就确定了一个解析的表达式。 拟合之后如何显示曲线的函数表达啊 具体是什么语句? 5# hbgskick
你好,为什么在做仿真的时候要对数据进行归一化处理?一般在什么情况下需要归一化处理?这个不明白,希望指点。谢谢。 这个例子是 丛爽老师书上的, 希望楼主以后给予引用出处! 可以的
权值和阀值、转换函数,就确定了一个解析的表达式。
subway96 发表于 2010-8-31 06:30 http://forum.simwe.com/images/common/back.gif请问具体用什么语句能把拟合的曲线表达成函数关系式?谢谢 14# cat0924 我也非常想知道,到底用什么样的语句可以输出这个函数!求大仙指教!!感激不尽! 这这就是画图嘛~
页:
[1]