matlab 创建神经网络

创建神经网络:

1、tf为神经网络的传输函数,默认为’tansig’函数为隐层的传输函数,

2、purelin函数为输出层的传输函数

%TF1 = ‘tansig’;TF2 = ‘logsig’;

%TF1 = ‘logsig’;TF2 = ‘purelin’;

%TF1 = ‘logsig’;TF2 = ‘logsig’;

%TF1 = ‘purelin’;TF2 = ‘purelin’;

TF1=‘tansig’;TF2=‘purelin’;
 

旧版的语法:

net=newff(minmax(p),[10,1],{TF1 TF2},'traingdm');%网络创建

新版本语法:

net2 = newff( input,output', [10] , { 'logsig' 'purelin' } , 'traingdx' ) ;    %新版本

网络参数设定:

net.trainParam.epochs=10000;%训练次数设置

net.trainParam.goal=1e-7;%训练目标设置

net.trainParam.lr=0.01;%学习率设置,应设置为较少值,太大虽然会在开始加快收敛速度,但临近最佳点时,会产生动荡,而致使无法收敛

net.trainParam.mc=0.9;%动量因子的设置,默认为0.9

net.trainParam.show=25;%显示的间隔次数

指定训练参数

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'; % ScaledConjugate Gradient算法,内存需求与Fletcher-Reeves修正算法相同,计算量比上面三种算法都小很多

net.trainFcn = 'trainbfg'; %Quasi-Newton Algorithms - BFGS Algorithm,计算量和内存需求均比共轭梯度算法大,但收敛比较快

net.trainFcn = 'trainoss'; % OneStep Secant Algorithm,计算量和内存需求均比BFGS算法小,比共轭梯度算法略大

% (中型网络的首选算法)

net.trainFcn = 'trainlm'; %Levenberg-Marquardt算法,内存需求最大,收敛速度最快

net.trainFcn = 'trainbr'; % 贝叶斯正则化算法

 有代表性的五种算法为:'traingdx','trainrp','trainscg','trainoss', 'trainlm'

%在这里一般是选取'trainlm'函数来训练,其算对对应的是Levenberg-Marquardt算法

训练 train

net.trainParam.epochs = 500; %`训练的最大次数
net.trainParam.goal = 1e-5;  %全局最小误差
net.trainParam.showWindow = 1;
net.trainParam.lr = 0.01;
net = train(net,ttraindata,tLabel); %训练一个神经网络

神经网络预测

O = sim(net,tempcharactmat{i}'); %使用网络仿真


参考连接:

Train shallow neural network - MATLAB train- MathWorks 中国

Simulate neural network - MATLAB sim- MathWorks 中国