广义回归神经网络MATLAB源程序Word文件下载.docx

上传人:b****1 文档编号:1505298 上传时间:2023-04-30 格式:DOCX 页数:9 大小:18.24KB
下载 相关 举报
广义回归神经网络MATLAB源程序Word文件下载.docx_第1页
第1页 / 共9页
广义回归神经网络MATLAB源程序Word文件下载.docx_第2页
第2页 / 共9页
广义回归神经网络MATLAB源程序Word文件下载.docx_第3页
第3页 / 共9页
广义回归神经网络MATLAB源程序Word文件下载.docx_第4页
第4页 / 共9页
广义回归神经网络MATLAB源程序Word文件下载.docx_第5页
第5页 / 共9页
广义回归神经网络MATLAB源程序Word文件下载.docx_第6页
第6页 / 共9页
广义回归神经网络MATLAB源程序Word文件下载.docx_第7页
第7页 / 共9页
广义回归神经网络MATLAB源程序Word文件下载.docx_第8页
第8页 / 共9页
广义回归神经网络MATLAB源程序Word文件下载.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

广义回归神经网络MATLAB源程序Word文件下载.docx

《广义回归神经网络MATLAB源程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《广义回归神经网络MATLAB源程序Word文件下载.docx(9页珍藏版)》请在冰点文库上搜索。

广义回归神经网络MATLAB源程序Word文件下载.docx

traindata'

title('

GRNN神经网络spread探讨'

loaddata;

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

p_train=p(1:

10,:

p_test=p(11:

13,:

t_train=t(1:

1O,:

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=:

1;

tic,

net=newgrnn(pn,tn,sc);

sc

toe

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(se,perf,'

g:

*'

holdon;

figure

(2);

网络的逼近误差'

)plot(sc,perfp,'

r:

);

%通用感应器神经网络。

P=[-40;

150];

%输入向量

T=[11001];

%期望输出plotpv(P,T);

%描绘输入点图像net=newp([-401;

-150],1);

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

linehandle=plotpc{1},{1});

fora=1:

25%训练次数[net,Y,E]=adapt(net,P,T);

linehandle=plotpc{1},{1},linehandle);

drawnow;

%通用newlin程序%通用线性网络进行预测time=0:

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('

目标信号'

title('

待预测信号'

net=newlind(P,T);

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

a=sim(net,P);

%网络测试

figure

(2)plot(time,a,time,T,'

+'

)xlabel('

输出-目标+'

输出信号和目标信号'

e=T-a;

figure(3)plot(time,e)holdonplot([min(time)max(time)],[00],'

'

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

)代替holdoffxlabel('

ylabel('

误差'

误差信号'

%通用BP神经网络

P=[-1-122;

0505];

t=[-1-111];

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

tansig'

purelin'

},'

traingd'

%输入参数依次为:

样本P范围'

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

训练函数'

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

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

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

%lr_dec(学习率下降

比,缺省为;

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

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

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

%delt_inc(权值变化增加量,

缺省为;

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

%delta0(初始权值变化,缺省

为;

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

%适合大型网络

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

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

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

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

缺少1个训练参数lr

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

%附加2个训练参数:

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

%

lambda(Hessian阵不确定性调节参数,缺省为

%缺少1个训练参数:

lr

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

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

用于内存充足的中小型网络

net=init(net);

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

%学习率(缺省为

为25)

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

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

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

%最大训练时间(缺省为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开始增加,直到达到训练精度或神经元数目最多为止

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

P=[456];

T=[];

net=newgrnn(P,T);

%仿真验证

p=;

v=sim(net,p)

%PNI网络,概率神经网络

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:

T=[...

■■■

];

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

r*'

训练样本'

xlabel('

输入向量P'

目标向量T'

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

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

p=-3:

.1:

3;

a=radbas(p);

plot(p,a)

径向基传递函数'

输入向量p'

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

a3=radbas(p+2);

a4=a+a2*+a3*;

plot(p,a,'

b'

p,a2,'

g'

p,a3,'

r'

p,a4,'

m--'

)title('

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

输入p'

输出a'

%应用newrb()函数构建径向基网络的时候,可以预先设定均方差精度eg以及散布常数sceg=;

sc=1;

%其值的选取与最终网络的效果有很大关

系,过小造成过适性,过大造成重叠性net=newrb(P,T,eg,sc);

%网络测试plot(P,T,'

输入'

X=-1:

.01:

Y=sim(net,X);

holdon

plot(X,Y);

holdofflegend('

目标'

输出'

)%应用grnn进行函数逼近P=[12345678];

T=[01232121];

plot(P,T,'

.'

markersize'

30)axis([09-14])title('

待逼近函数'

P'

)ylabel('

T'

)%网络设计

%对于离散数据点,散布常数spread选取比输入向量之间的距离稍小一些spread=;

net=newgrnn(P,T,spread);

%网络测试

A=sim(net,P);

holdonoutputline=plot(P,A,'

10,'

color'

[100]);

检测网络'

T和A'

)%应用pnn进行变量的分类P=[12;

22;

11];

%输入向量

Tc=[123];

%P对应的三个期望输出

%绘制出输入向量及其相对应的类别plot(P(1,:

),P(2,:

),'

30)fori=1:

3

text(P(1,i)+,P(2,i),sprintf('

class%g'

Tc(i)))end

axis([0303]);

三向量及其类别'

P(1,:

)'

P(2,:

spread=1;

net=newgrnn(P,T,speard);

%网络测试A=sim(net,P);

Ac=vec2ind(A);

%绘制输入向量及其相应的网络输出

plot(P(1,:

30)

Ac(i)))end

网络测试结果'

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2