的训练结果。
训练方法
训练函数
梯度下降法
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');%
拟牛顿算法