Matlab中各种神经网络的使用示例.docx

上传人:b****1 文档编号:442133 上传时间:2022-10-10 格式:DOCX 页数:8 大小:98.89KB
下载 相关 举报
Matlab中各种神经网络的使用示例.docx_第1页
第1页 / 共8页
Matlab中各种神经网络的使用示例.docx_第2页
第2页 / 共8页
Matlab中各种神经网络的使用示例.docx_第3页
第3页 / 共8页
Matlab中各种神经网络的使用示例.docx_第4页
第4页 / 共8页
Matlab中各种神经网络的使用示例.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

Matlab中各种神经网络的使用示例.docx

《Matlab中各种神经网络的使用示例.docx》由会员分享,可在线阅读,更多相关《Matlab中各种神经网络的使用示例.docx(8页珍藏版)》请在冰豆网上搜索。

Matlab中各种神经网络的使用示例.docx

Matlab中各种神经网络的使用示例

Matlab中各种神经网络的使用示例

LT

%训练函数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);

Yc=vec2ind(Y)

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

P=-1:

0.1:

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];

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

plot(P,T,'r*');

title('训练样本');

xlabel('输入向量P');

ylabel('目标向量T');

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

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

p=-3:

.1:

3;

a=radbas(p);

plot(p,a)

title('径向基传递函数')

xlabel('输入向量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--')

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

xlabel('输入p');

ylabel('输出a');

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

eg=0.02;

sc=1;  %其值的选取与最终网络的效果有很大关系,过小造成过适性,过大造成重叠性

net=newrb(P,T,eg,sc);

%网络测试

plot(P,T,'*')

xlabel('输入');

X=-1:

.01:

1;

Y=sim(net,X);

holdon

plot(X,Y);

holdoff

legend('目标','输出')

%应用grnn进行函数逼近

P=[12345678];

T=[01232121];

plot(P,T,'.','markersize',30)

axis([09-14])

title('待逼近函数')

xlabel('P')

ylabel('T')

%网络设计

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

spread=0.7;

net=newgrnn(P,T,spread);

%网络测试

A=sim(net,P);

holdon

outputline=plot(P,A,'o','markersize',10,'color',[100]);

title('检测网络')

xlabel('P')

ylabel('T和A')

%应用pnn进行变量的分类

P=[12;22;11];%输入向量

Tc=[123];    %P对应的三个期望输出

%绘制出输入向量及其相对应的类别

plot(P(1,:

),P(2,:

),'.','markersize',30)

fori=1:

3

text(P(1,i)+0.1,P(2,i),sprintf('class%g',Tc(i)))

end

axis([0303]);

title('三向量及其类别')

xlabel('P(1,:

)')

ylabel('P(2,:

)')

%网络设计

T=ind2vec(Tc);

spread=1;

net=newgrnn(P,T,speard);

%网络测试

A=sim(net,P);

Ac=vec2ind(A);

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

plot(P(1,:

),P(2,:

),'.','markersize',30)

fori=1:

3

text(P(1,i)+0.1,P(2,i),sprintf('class%g',Ac(i)))

end

axis([0303]);

title('网络测试结果')

xlabel('P(1,:

)')

ylabel('P(2,:

)')

 

%广义回归神经网络

%%GRNN神经网络,主要用于函数逼近。

x=-2:

0.01:

1

y=2*x.^6+3*x.^5-3*x.^3+x.^2+1

P=x(1:

15:

end)

T=y(1:

15:

end)

spread=[0.050.20.40.60.8];

l_style={'r.-','bo--','ko-.','k*--','r^-'};

fori=1:

length(spread)

   net=newgrnn(P,T,spread(i));

   a=sim(net,P);

   plot(P,a,l_style{i})

   holdon

end

plot(P,T,'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:

10,:

);

t_test=t(11:

13,:

);

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

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:

0.01:

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:

*');

holdon;

figure

(2);

title('网络的逼近误差')

plot(sc,perfp,'r:

*');

end

 

%通用感应器神经网络

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;

end

%通用线性网络程序

%通用newlind进行预测

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)=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('时间');

ylabe

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

当前位置:首页 > 工程科技 > 纺织轻工业

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

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