
神经网络拟合函数的小例题
刚开始学神经网络以前也没接触过看了书感觉晕晕的希望能通过一个简单例题的形式学习一下另外如果有很好的书可以用简单的方式讲解神经网络的帮我推荐下。有好的例题也帮忙发一个谢谢啦...
刚开始学神经网络 以前也没接触过 看了书感觉晕晕的 希望能通过一个简单例题的形式学习一下 另外如果有很好的书 可以用简单的方式讲解神经网络的 帮我推荐下。有好的例题也帮忙发一个 谢谢啦!从网上找到一个例题:
已知某系统输出y与输入x的部分对应关系为下表所示,设计一BP神经网络,完成y=f(x)的曲线拟合。 展开
已知某系统输出y与输入x的部分对应关系为下表所示,设计一BP神经网络,完成y=f(x)的曲线拟合。 展开
展开全部
人工神经网络第一次作业
题目:使用函数
sin(
)
au
t
e
cu
试验
MATLAB
中的
BP
算法
1
、改变不同训练算法,观察效果;
2
、改变参数
a,c
的值,观察效果;
3
、改变隐层神经网络个数,观察效果;
4
、尝试:加入噪声的训练效果。
一、改变不同训练算法,观察效果
在
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(
'output_y'
);
legend(
'
目标函数曲线
'
,
'
未经训练
BP
网络逼近曲线
'
,
'
训练后的
BP
网络逼近曲线
'
);
题目:使用函数
sin(
)
au
t
e
cu
试验
MATLAB
中的
BP
算法
1
、改变不同训练算法,观察效果;
2
、改变参数
a,c
的值,观察效果;
3
、改变隐层神经网络个数,观察效果;
4
、尝试:加入噪声的训练效果。
一、改变不同训练算法,观察效果
在
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(
'output_y'
);
legend(
'
目标函数曲线
'
,
'
未经训练
BP
网络逼近曲线
'
,
'
训练后的
BP
网络逼近曲线
'
);
展开全部
你这个问题其实我回答过,你可以参考:http://zhidao.baidu.com/question/278670230.html
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询