广义回归神经网络MATLAB源程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 共轭梯度法 ;