- 1、本文档共53页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9.2.2 神经网络的训练与泛化 神经网络训练函数 X为n*M,n为输入变量的路数,M为样本的组数,Y为m*M,m为输出变量的路数。tr为结构体数据,返回训练的相关跟踪信息。Y1和E为输出和误差矩阵。 可多次训练,原加权矩阵为初值。 目标值曲线函数 神经网络泛化 例:由前面最小拟合的例子中的数据进行曲线拟合,2个隐层,隐层节点选择为5。 x=0:.5:10; y=0.12*exp(-0.213*x)+0.54*exp(-0.17*x).*sin(1.23*x); x0=[0:0.1:10]; y0=0.12*exp(-0.213*x0)+0.54*exp(-0.17*x0).*sin(1.23*x0); net=newff([0,10],[5,1],{tansig,tansig}); net.trainParam.epochs=1000; % 设置最大步数 net=train(net,x,y); % 训练神经网络 [net.IW{1} net.LW{2,1}] % 隐层权值和输出层权值 ans = 0.4765 -1.9076 0.5784 0.9450 -0.2888 -2.7916 0.3052 -2.9388 0.9780 1.1814 %可改变求解算法 net=newff([0,10],[5,1],{tansig,tansig}); net.trainParam.epochs=100; net.trainFcn=trainlm; [net,b1]=train(net,x,y); net=newff([0,10],[5,1],{tansig,tansig}); net.trainParam.epochs=100; net.trainFcn=traincgf; [net,b2]=train(net,x,y); net=newff([0,10],[5,1],{tansig,tansig}); net.trainParam.epochs=100; net.trainFcn=traingdx; [net,b3]=train(net,x,y); %可改变各层传输函数 net=newff([0,10],[5,1],{tansig,logsig}); net.trainParam.epochs=100; net.trainFcn=trainlm; [net,b2]=train(net,x,y); net=newff([0,10],[5,1],{logsig,tansig}); [net,b3]=train(net,x,y); net=newff([0,10],[5,1],{logsig,logsig}); [net,b4]=train(net,x,y); %可改变结构,选择隐层15个节点 net=newff([0,10],[15,1],{tansig,tansig}); net.trainParam.epochs=100; net.trainFcn=trainlm; [net,b2]=train(net,x,y); figure; y1=sim(net,x0); plot(x0,y0,x0,y1,x,y,o) 例:二元函数的拟合 [x,y]=meshgrid(-3:.6:3, -2:.4:2); x=x(:); y=y(:); z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y); % 这三个变量均应为行向量 net=newff([-3 3; -2 2],[10,10,1],{tansig,tansig,tansig}); net.trainParam.epochs=1000; net.trainFcn=trainlm; [net,b]=train(net,[x; y],z); % 训练神经网络 [x2,y2]=meshgrid(-3:.1:3, -2:.1:2); x1=x2(:); y1=y2(:); figure; z1=sim(net,[x1; y1]); z2=reshape(z1,size(x2)); surf(x2,y2,z2) %改变第二层节点数 net=newff([-3 3; -2 2],[10,20,1],{tansig,tansig,tansig}); [net,b]=train(net,[x; y],z); % 训练神经网络 z1=sim(net,[x1; y1]); z2=reshape(z1,size(x2)); surf(x2,y2,z2) %效果不好 %给出密集一点的的样本点 [x,y]=meshg
文档评论(0)