关于建立
神经网络代码段的参数说明:
net=feedforwardnet(N,'trainlm');
% N为隐藏层大小,缺省为10;‘trainlm’是被指定的训练函数:Levenberg-Marquardt
算法
T=P;
net.trainParam.goal=0.001;
%goal是最小均方误差的训练目标
net.trainParam.epochs=500;
%epochs是较大训练次数(迭代次数)
tic
%记录当前时间
net=train(net,P,T);
%自动把输出按比例划分为训练集、测试集、预测集
toc
%
记录运行train
的耗费时间
其它的训练函数有如下:
其它可以指定的训练函数有如下:
% net.trainFcn ='traingd'; % 梯度下降算法
% net.trainFcn ='traingdm'; % 动量梯度下降算法
%
% net.trainFcn ='traingda'; % 变学习率梯度下降算法
% net.trainFcn ='traingdx'; % 变学习率动量梯度下降算法
%
% (大型网络的推荐算法)
% net.trainFcn ='trainrp'; % RPROP(弹性BP)算法,内存需求最小
%
% (共轭梯度算法)
% net.trainFcn ='traincgf'; % Fletcher-Reeves修正算法
% net.trainFcn ='traincgp'; % Polak-Ribiere修正算法,内存需求比Fletcher-Reeves修正算法略大
% net.trainFcn ='traincgb'; % Powell-Beal复位算法,内存需求比Polak-Ribiere修正算法略大
%
% (大型网络的推荐算法)
%net.trainFcn ='trainscg'; % Scaled ConjugateGradient算法,内存需求与Fletcher-Reeves修正算法相同,计算量比上面三种算法都小很多
% net.trainFcn ='trainbfg'; % Quasi-NewtonAlgorithms - BFGS Algorithm,计算量和内存需求均比共轭梯度算法大,但收敛比较快
% net.trainFcn ='trainoss'; % One Step SecantAlgorithm,计算量和内存需求均比BFGS算法小,比共轭梯度算法略大
%
% (中型网络的推荐算法)
%net.trainFcn ='trainlm'; % Levenberg-Marquardt算法,内存需求较大,收敛速度最快
% net.trainFcn ='trainbr'; % 贝叶斯正则化算法
%
% 有代表性的五种算法为:'traingdx','trainrp','trainscg','trainoss','trainlm'