文档详情

神经网络大作业 函数拟合.doc

发布:2019-03-31约4.67千字共14页下载文档
文本预览下载声明
人工神经网络第一次作业 题目:使用函数试验MATLAB中的BP算法 改变不同训练算法,观察效果; 改变参数a,c的值,观察效果; 改变隐层神经网络个数,观察效果; 尝试:加入噪声的训练效果。 一、改变不同训练算法,观察效果 在MATLAB中,BP网络的训练函数一共有以下几种,改变不同训练算法,观察效果就是在其他参数不变只改变程序中训练函数的情况下,得到不同训练算法的训练结果。 训练方法 训练函数 梯度下降法 traingd 有动量的梯度下降法 traingdm 自适应lr梯度下降法 traingda 自适应lr动量梯度下降法 traingdx 弹性梯度下降法 trainrp Fletcher-Reeves共轭梯度法 traincgf Ploak-Ribiere共轭梯度法 traincgp Powell-Beale共轭梯度法 traincgb 量化共轭梯度法 trainscg 拟牛顿算法 trainbfg 一步正割算法 trainoss Levenberg-Marquardt法 trainlm 由于这只是改变程序中的训练算法,其他不变,所以为了简洁,在本程序中只选取了四种训练算法,分别是梯度下降法traingd、弹性梯度下降法trainrp、拟牛顿算法trainbfg和Levenberg-Marquardt法trainlm,只更改不同的训练算法来构造节点,程序如下,得到不同训练算法下的仿真图如图1所示。 clear all; close all; clc; a=1,c=1; %在此改变a,c的值 layer_number=20; %在此改隐含层的个数 u=-4:0.001:4; t=exp(-a*u).*sin(c*u); %这里是矩阵相乘,要用点乘 net=newff(minmax(u),[layer_number,1],{tansig,purelin},traingd);%梯度下降法 y1=sim(net,u);%未训练直接输出 net1=newff(minmax(u),[layer_number,1],{tansig,purelin},traingd);%梯度下降法 net2=newff(minmax(u),[layer_number,1],{tansig,purelin},trainrp);%弹性梯度下降法 net3=newff(minmax(u),[layer_number,1],{tansig,purelin},trainbfg);%拟牛顿算法 net4=newff(minmax(u),[layer_number,1],{tansig,purelin},trainlm);%Levenberg-Marquardt net.trainParam.show = 50; net.trainparam.epochs=1000; net.trainparam.goal=0.01; net1=train(net1,u,t);%采用梯度下降法训练节点 net2=train(net2,u,t);%采用弹性梯度下降法训练节点 net3=train(net3,u,t);%采用拟牛顿算法训练节点 net4=train(net4,u,t);%采用Levenberg-Marquardt法训练节点 y2_1=sim(net1,u); y2_2=sim(net2,u); y2_3=sim(net3,u); y2_4=sim(net4,u); subplot(2,2,1) plot(u,t,b--,u,y1,g:,u,y2_1,r-); title(1、采用梯度下降法的仿真结果图);xlabel(input_u);ylabel(output_y); legend(目标函数曲线,未经训练BP网络逼近曲线,训练后的BP网络逼近曲线); subplot(2,2,2) plot(u,t,b--,u,y1,g:,u,y2_2,r-) ; title(2、采用弹性梯度下降法的仿真结果图);xlabel(input_u);ylabel(output_y); legend(目标函数曲线,未经训练BP网络逼近曲线,训练后的BP网络逼近曲线); subplot(2,2,3) plot(u,t,b--,u,y1,g:,u,y2_3,r-) ; title(3、采用拟牛顿算法的仿真结果图);xlabel(input_u);ylabel(output_y); legend(目标函数曲线,未经训练BP网络逼近曲线,训练后的BP网络逼近曲线); subplot(2,2,4) plot(u,t,b--,u,y1,g:,u,y2_4,r-) ; title(4、采用Levenberg-Marquardt法的仿真结果图);xlabel(input_u);ylabel(out
显示全部
相似文档