广义回归神经网络MATLAB源程序文档格式.doc

上传人:b****1 文档编号:13167856 上传时间:2022-10-07 格式:DOC 页数:15 大小:24KB
下载 相关 举报
广义回归神经网络MATLAB源程序文档格式.doc_第1页
第1页 / 共15页
广义回归神经网络MATLAB源程序文档格式.doc_第2页
第2页 / 共15页
广义回归神经网络MATLAB源程序文档格式.doc_第3页
第3页 / 共15页
广义回归神经网络MATLAB源程序文档格式.doc_第4页
第4页 / 共15页
广义回归神经网络MATLAB源程序文档格式.doc_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

广义回归神经网络MATLAB源程序文档格式.doc

《广义回归神经网络MATLAB源程序文档格式.doc》由会员分享,可在线阅读,更多相关《广义回归神经网络MATLAB源程序文档格式.doc(15页珍藏版)》请在冰豆网上搜索。

广义回归神经网络MATLAB源程序文档格式.doc

o'

);

legend('

spread=0.05'

spread=0.2'

spread=0.4'

spread=0.6'

spread=0.8'

traindata'

title('

GRNN神经网络spread探讨'

loaddata;

%载入数据并将数据分成训练和预测两类

p_train=p(1:

10,:

p_test=p(11:

13,:

t_train=t(1:

t_test=t(11:

%将各个矩阵转置以便适应网络结构

p_train=p_train'

;

t_train=t_train'

p_test=p_test'

t_test=t_test'

%将数据归一化

[pn,minp,maxp,tn,mint,maxt]=premnmx(p_train,t_train);

p2n=tramnmx(p_test,minp,maxp);

forsc=0.1:

1;

tic,

net=newgrnn(pn,tn,sc);

sc

toc

Out=sim(net,p2n);

a2=postmnmx(Out,mint,maxt);

e=t_test-a2'

perf=mse(e);

Y=sim(net,pn);

a3=postmnmx(Y,mint,maxt);

ep=a3-t_train;

perfp=mse(ep);

holdon;

figure

(1);

title('

网络的预测误差'

plot(sc,perf,'

g:

*'

figure

(2);

网络的逼近误差'

plot(sc,perfp,'

r:

%通用感应器神经网络。

P=[-0.5-0.50.3-0.1-40;

-0.50.5-0.5150];

%输入向量

T=[11001];

%期望输出

plotpv(P,T);

%描绘输入点图像

net=newp([-401;

-150],1);

%生成网络,其中参数分别为输入向量的范围和神经元感应器数量

holdon

linehandle=plotpc(net.iw{1},net.b{1});

net.adaptparam.passes=3;

fora=1:

25%训练次数

[net,Y,E]=adapt(net,P,T);

linehandle=plotpc(net.iw{1},net.b{1},linehandle);

drawnow;

%通用newlin程序

%通用线性网络进行预测

time=0:

0.025:

5;

T=sin(time*4*pi);

Q=length(T);

P=zeros(5,Q);

%P中存储信号T的前5(可变,根据需要而定)次值,作为网络输入。

P(1,2:

Q)=T(1,1:

(Q-1));

P(2,3:

(Q-2));

P(3,4:

(Q-3));

P(4,5:

(Q-4));

P(5,6:

(Q-5));

plot(time,T)%绘制信号T曲线

xlabel('

时间'

ylabel('

目标信号'

待预测信号'

net=newlind(P,T);

%根据输入和期望输出直接生成线性网络

a=sim(net,P);

%网络测试

figure

(2)

plot(time,a,time,T,'

+'

输出-目标+'

输出信号和目标信号'

e=T-a;

figure(3)

plot(time,e)

plot([min(time)max(time)],[00],'

'

)%可用plot(x,zeros(size(x)),'

)代替

holdoff

误差'

误差信号'

%通用BP神经网络

P=[-1-122;

0505];

t=[-1-111];

net=newff(minmax(P),[3,1],{'

tansig'

purelin'

},'

traingd'

%输入参数依次为:

样本P范围'

[各层神经元数目],{各层传递函数},'

训练函数'

%训练函数traingd--梯度下降法,有7个训练参数.

%训练函数traingdm--有动量的梯度下降法,附加1个训练参数mc(动量因子,缺省为0.9)

%训练函数traingda--有自适应lr的梯度下降法,附加3个训练参数:

lr_inc(学习率增长比,缺省为1.05;

 

lr_dec(学习率下降比,缺省为0.7);

max_perf_inc(表现函数增加最大比,缺省为1.04)

%训练函数traingdx--有动量的梯度下降法中赋以自适应lr的方法,附加traingdm和traingda的4个附加参数

%训练函数trainrp--弹性梯度下降法,可以消除输入数值很大或很小时的误差,附加4个训练参数:

delt_inc(权值变化增加量,缺省为1.2);

delt_dec(权值变化减小量,缺省为0.5);

delta0(初始权值变化,缺省为0.07);

deltamax(权值变化最大值,缺省为50.0)

适合大型网络

%训练函数traincgf--Fletcher-Reeves共轭梯度法;

训练函数traincgp--Polak-Ribiere共轭梯度法;

%训练函数traincgb--Powell-Beale共轭梯度法

%共轭梯度法占用存储空间小,附加1训练参数searchFcn(一维线性搜索方法,缺省为srchcha);

缺少1个训练参数lr

%训练函数trainscg--量化共轭梯度法,与其他共轭梯度法相比,节约时间.适合大型网络 

附加2个训练参数:

sigma(因为二次求导对权值调整的影响参数,缺省为5.0e-5);

lambda(Hessian阵不确定性调节参数,缺省为5.0e-7)

缺少1个训练参数:

lr

%训练函数trainbfg--BFGS拟牛顿回退法,收敛速度快,但需要更多内存,与共轭梯度法训练参数相同,适合小网络

%训练函数trainoss--一步正割的BP训练法,解决了BFGS消耗内存的问题,与共轭梯度法训练参数相同

%训练函数trainlm--Levenberg-Marquardt训练法,用于内存充足的中小型网络

net=init(net);

net.trainparam.epochs=300;

%最大训练次数(前缺省为10,自trainrp后,缺省为100)

net.trainparam.lr=0.05;

%学习率(缺省为0.01)

net.trainparam.show=50;

%限时训练迭代过程(NaN表示不显示,缺省为25)

net.trainparam.goal=1e-5;

%训练要求精度(缺省为0)

%net.trainparam.max_fail 

最大失败次数(缺省为5)

%net.trainparam.min_grad 

最小梯度要求(前缺省为1e-10,自trainrp后,缺省为1e-6)

%net.trainparam.time 

最大训练时间(缺省为inf)

[net,tr]=train(net,P,t);

%网络训练

a=sim(net,P) 

%网络仿真

%通用径向基函数网络——

%其在逼近能力,分类能力,学习速度方面均优于BP神经网络

%在径向基网络中,径向基层的散步常数是spread的选取是关键

%spread越大,需要的神经元越少,但精度会相应下降,spread的缺省值为1

%可以通过net=newrbe(P,T,spread)生成网络,且误差为0

%可以通过net=newrb(P,T,goal,spread)生成网络,神经元由1开始增加,直到达到训练精度或神经元数目最多为止

%GRNN网络,迅速生成广义回归神经网络(GRNN)

P=[456];

T=[1.53.66.7];

net=newgrnn(P,T);

%仿真验证

p=4.5;

v=sim(net,p)

%PNN网络,概率神经网络

P=[00;

11;

03;

14;

31;

41;

43]'

Tc=[1122333];

%将期望输出通过ind2vec()转换,并设计、验证网络

T=ind2vec(Tc);

net=newpnn(P,T);

Y=sim(net,P);

Yc=vec2ind(Y)

%尝试用其他的输入向量验证网络

P2=[14;

01;

52]'

Y=sim(net,P2);

%应用newrb()函数构建径向基网络,对一系列数据点进行函数逼近

P=-1:

0.1:

T=[-0.9602-0.5770-0.07290.37710.64050.66000.4609...

0.1336-0.2013-0.4344-0.500-0.3930-0.1647-0.0988...

0.30720.39600.34490.1816-0.0312-0.2189-0.3201];

%绘制训练用样本的数据点

r*'

训练样本'

输入向量P'

目标向量T'

%设计一个径向基函数网络,网络有两层,隐层为径向基神经元,输出层为线性神经元

%绘制隐层神经元径向基传递函数的曲线

p=-3:

.1:

3;

a=radbas(p);

plot(p,a)

径向基传递函数'

输入向量p'

%隐层神经元的权值、阈值与径向基函数的位置和宽度有关,只要隐层神经元数目、权值、阈值正确,可逼近任意函数

%例如

a2=radbas(p-1.5);

a3=radbas(p+2);

a4=a+a2*1.5+a3*0.5;

plot(p,a,'

b'

p,a2,'

g'

p,a3,'

r'

p,a4,'

m--'

径向基传递函数权值之和'

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 判决书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1