广义回归神经网络MATLAB源程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

GRN神经网络---广义回归神经网络,主要用于函数逼近。

x=-2::1

y=2*x.A6+3*x.A5-3*x.A3+x.A2+1

P=x(1:15:e nd)

T=y(1:15:e nd)

spread=[];

l_style=C,'bo--','ko-.','k*--','rA-'};

for i=1:le ngth(spread)

net=n ewgr nn( P,T,spread(i));

a=sim (n et,P);

plot(P,a,l_style{i})

hold on

end

plot(P,T,'o');

lege nd('spread二','spread二','spread二

','spread二'

,'spread=','trai n data');

title('GRNN 神经网络 spread 探讨')

load data;

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

p_trai n=p(1:10,:);

p_test=p(11:13,:);

t_trai n=t(1:1O,:);

t_test=t(11:13,:);

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

p_trai n=p_trai n';

t_trai n=t_trai n';

p_test=p_test';

t_test=t_test';

%将数据归一化

[pn ,mi np,maxp,t n,mi nt,maxt]=pre mnm x(p_trai n,t_ trai n);

p2n=tra mnm x(p_test,mi np,maxp);

for sc=::1;

tic,

net=n ewgr nn(pn ,t n,sc);

sc

toe

Out=sim (n et,p2 n);

a2=post mnm x(Out,mi nt,maxt);

e=t_test-a2';

perf=mse(e);

Y=sim (n et,p n);

a3=post mnm x(Y,mi nt,maxt);

ep=a3-t_tra in; perfp=mse(ep); hold on;

figure(1);

title( '网络的预测误差') plot(se,perf, 'g:*');

hold on;

figure(2);

title( '网络的逼近误差') plot(sc,perfp, 'r:*' ); end

%通用感应器神经网络。

P=[ -40; 1 50];% 输入向量

T=[1 1 0 0 1];% 期望输出 plotpv(P,T);% 描绘输入点图像 net=newp([-40 1;-1 50],1);% 生成网络,其中参数分别为输入向量的范围和神经元感应器数量 hold on linehandle=plotpc{1},{1});

for a=1:25% 训练次数 [net,Y,E]=adapt(net,P,T); linehandle=plotpc{1},{1},linehandle); drawnow;

end

%通用 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)=T(1,1:(Q-2));

P(3,4:Q)=T(1,1:(Q-3));

P(4,5:Q)=T(1,1:(Q-4));

P(5,6:Q)=T(1,1:(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(' 时间 '); ylabel(' 输出- 目标+');

title(' 输出信号和目标信号 '); e=T-a;

figure(3) plot(time,e) hold on plot([min(time)

max(time)],[0 0],'r:')% 可用

plot(x,zeros(size(x)),'r:') 代替 hold off xlabel(' 时间 '); ylabel(' 误差 ');

title(' 误差信号 ');

%通用BP神经网络

P=[-1 -1 2 2;0 5 0 5]; t=[-1 -1 1 1];

net=newff(minmax(P),[3,1],{'tansig','purelin'} ,'tra ingd');

%输入参数依次为 :' 样本 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 共轭梯度法 ;

相关文档
最新文档