1、trai n datatitle(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:%将各个矩阵转置以便适应网络结构p_trai n=p_trai n;t_trai n=t_trai np_test=p_testt_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,ma
2、xp);for sc=:1;tic,net=n ewgr nn(pn ,t n,sc);sctoeOut=sim (n et,p2 n);a2=post mnm x(Out,mi nt,maxt);e=t_test-a2perf=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);网络的逼近误差) plot(sc,perfp, r: );%通用感
3、应器神经网络。P= -40; 1 50;% 输入向量T=1 1 0 0 1;% 期望输出 plotpv(P,T);% 描绘输入点图像 net=newp(-40 1;-1 50,1);% 生成网络,其中参数分 别为输入向量的范围和神经元感应器数量 hold onlinehandle=plotpc1,1);for a=1:25% 训练次数 net,Y,E=adapt(net,P,T);linehandle=plotpc1,1,linehandle); drawnow;%通用 newlin 程序 %通用线性网络进行预测 time=0:5;T=sin(time*4*pi); Q=length(T);P
4、=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;fig
5、ure(3) plot(time,e) hold on plot(min(time) max(time),0 0,)% 可 用 plot(x,zeros(size(x),) 代替 hold off xlabel( ylabel( 误差 误差信号 %通用BP神经网络P=-1 -1 2 2;0 5 0 5; t=-1 -1 1 1;net=newff(minmax(P),3,1,tansigpurelin ,traingd%输入参数依次为 : 样本 P 范围 , 各层神经元数 目, 各层传递函数 , 训练函数 %训练函数 traingd- 梯度下降法,有 7 个训练参数 . %训练函数 train
6、gdm- 有动量的梯度下降法 , 附加 1 个 训练参数mc(动量因子,缺省为%训练函数 traingda- 有自适应 lr 的梯度下降法 , 附 加 3 个训练参数 :lr_inc( 学习率增长比,缺省为 ;% lr_dec( 学习率下降比,缺省为 ;max_perf_inc( 表现函数增加最大比,缺 省为%训练函数 traingdx- 有动量的梯度下降法中赋以自 适应 lr 的方法,附加 traingdm 和 traingda 的 4 个附 加参数%训练函数 trainrp- 弹性梯度下降法 , 可以消除输入 数值很大或很小时的误差,附加 4 个训练参数 : % delt_inc( 权值变
7、化增加量,缺省为 ;delt_dec( 权值变化减小量,缺省为 ;% delta0( 初始权值变化,缺省为;deltamax(权值变化最大值,缺省为% 适合大型网络%训练函数 traincgf-Fletcher-Reeves 共轭梯度法 ;训练函数 traincgp-Polak-Ribiere 共轭梯度法 ;%训练函数 traincgb-Powell-Beale 共轭梯度法%共 轭梯 度法 占用 存储 空间 小, 附 加 1 训 练 参 数 searchFcn( 一维线性搜索方法 , 缺省为 srchcha); 缺 少 1 个训练参数 lr%训练函数 trainscg- 量化共轭梯度法 , 与
8、其他共轭 梯度法相比,节约时间.适合大型网 络% 附 加 2 个 训 练 参 数 :sigma( 因为二次求导对权值调整的影响参数, 缺省 为;%lambda(Hessian 阵不确定性调节参数,缺省为% 缺少 1 个训练参数 :lr%训练函数 trainbfg-BFGS 拟牛顿回退法 , 收敛速度 快, 但需要更多内存 , 与共轭梯度法训练参数相同 , 适 合小网络%训练函数trainoss- 步正割的BP训练法,解决了 BFGS消耗内存的问题,与共轭梯度法训练参数相同 %训练函数 trainlm-Levenberg-Marquardt 训练法 ,用于内存充足的中小型网络net=init(n
9、et);%最大训练次数 ( 前缺省为 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 越大 , 需要
10、的神经元越少 , 但精度会相应下 降 ,spread 的缺省值为 1%可以通过 net=newrbe(P,T,spread) 生成网络 , 且误 差为 0%可以通过 net=newrb(P,T,goal,spread) 生成网络 , 神经元由 1 开始增加 , 直到达到训练精度或神经元数 目最多为止%GRN网络,迅速生成广义回归神经网络(GRNN)P=4 5 6;T= ;net=newgrnn(P,T);%仿真验证p=;v=sim(net,p)%PNI网络,概率神经网络P=0 0 ;1 1;0 3;1 4;3 1;4 1;4 3Tc=1 1 2 2 3 3 3;%将期望输出通过 ind2vec
11、() 转换, 并设计、验证网络T=ind2vec(Tc);net=newpnn(P,T);Y=sim(net,P);Yc=vec2ind(Y)%尝试用其他的输入向量验证网络P2=1 4;0 1;5 2Y=sim(net,P2);%应用 newrb() 函数构建径向基网络 , 对一系列数据点 进行函数逼近P=-1:T= . ;%绘制训练用样本的数据点r* 训练样本 xlabel( 输入向量 P 目标向量 T%设计一个径向基函数网络,网络有两层 , 隐层为径向 基神经元 , 输出层为线性神经元%绘制隐层神经元径向基传递函数的曲线p=-3:.1:3;a=radbas(p);plot(p,a) 径向基
12、传递函数 输入向量 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 以及散布常数 sc eg=;sc=1; %其值的选取与最终网络的效果有很大关系, 过小造成过适性 , 过大造成重叠性 net=newrb(P,T,eg,sc);%网
13、络测试 plot(P,T, 输入 X=-1:.01: Y=sim(net,X); hold onplot(X,Y); hold off legend( 目标 输出 ) %应用 grnn 进行函数逼近 P=1 2 3 4 5 6 7 8; T=0 1 2 3 2 1 2 1; plot(P,T,.markersize,30) axis(0 9 -1 4) title( 待逼近函数 P) ylabel(T) %网络设计%对于离散数据点 , 散布常数 spread 选取比输入向量 之间的距离稍小一些 spread=;net=newgrnn(P,T,spread); %网络测试A=sim(net,P)
14、; hold on outputline=plot(P,A,10,color ,1 0 0); 检测网络 T 和 A) %应用 pnn 进行变量的分类 P=1 2;2 2;1 1; % 输入向量Tc=1 2 3; %P对应的三个期望输出%绘制出输入向量及其相对应的类别 plot(P(1,:),P(2,:),30) for i=1:3text(P(1,i)+,P(2,i),sprintf(class %g,Tc(i) endaxis(0 3 0 3); 三向量及其类别 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