新版matlab中神经网络训练函数newff的使用方法
新版 Matlab 中神经网络训练函数 Newff 的使用方法一、 介绍新版 newffSyntax net = newff(P,T,[S1 S2.S(N-l)],{TF1 TF2.TFNl}, BTF,BLF,PF,IPF,OPF,DDF)Descriptionnewff(P,T,[S1 S2.S(N-l)],{TF1 TF2.TFNl}, BTF,BLF,PF,IPF,OPF,DDF) takes several argumentsP R x Q1 matrix of Q1 sample R-element vectorsT SN x Q2 matrix of Q2 sample SN-element target vectorsSi Size of ith layer, for N-1 layers, default = [ ].(Output layer size SN is determined from T.)TFi Transfer function of ith layer. (Default = tansig forhidden layers and purelin for output layer.)BTF Backpropagation network training function (default = trainlm )BLF Backpropagation weight/bias learning function (default = learngdm )IPF Row cell array of processing functions. (Default = { fixunknowns , removeconstantrows , mapminmax })OPF Row cell array of output processing functions. (Default = { removeconstantrows , mapminmax })DDF Data divison function (default = dividerand )ExamplesHere is a problem consisting of s P and targets T to be solved with a network. P = [0 1 2 3 4 5 6 7 8 9 10];T = [0 1 2 3 4 3 2 1 2 3 4];Here a network is created with one hidden layer of five neurons. net = newff(P,T,5);The network is simulated and its output plotted against the targets. Y = sim(net,P);plot(P,T,P,Y, o )The network is trained for 50 epochs. Again the network s output is plotted. net.trainParam.epochs = 50;net = train(net,P,T);Y = sim(net,P);plot(P,T,P,Y, o )二、 新版 newff 与旧版 newff 调用语法对比Example1比如输入 (6*1000) ,输出 output 为( 4*1000) ,那么旧版定义:net=newff(minmax(),[14,4],{ tansig , purelin }, trainlm );新版定义:net=newff(,output,14,{ tansig , purelin }, trainlm );Example2比如输入 (6*1000) ,输出 output 为( 4*1000) ,那么旧版定义:net=newff(minmax(),[49,14,4],{ tansig , tansig , tansig }, traingdx );新版定义:net=newff(,output, [49,14], { tansig , tansig , tansig }, traingdx );三、 旧版 newff 使用方法在新版本中使用提示:旧版本定义的 newff 虽也能在新版本中使用,但会有警告,警告如下:Warning: NEWFF used in an obsolete way. > In obs_use at 18In newff>create_network at 127In newff at 102See help for NEWFF to update calls to the new argument list.四、 新版 newff 与旧版 newff 使用的训练效果对比旧版本:旧用法训练次数多,但精度高新版本:新用法训练次数少,但精度可能达不到要求造成上述原因是:程序里面的权值、阈值的初始值是随机赋值的,所以每次运行的结果都会不一样,有好有坏。你可以把预测效果不错的网络的权值和阈值作为初始值。具体可以查看 net.iw{1,1}、net.lw{2,1}、net.b{1}、net.b{2}的值。现在给一个完整的例子%% 清空环境变量clcclear%% 训练数据预测数据data=importdata( test.txt );%从 1 到 768 间随机排序k=rand(1,768);[m,n]=sort(k);%输入输出数据=data(:,1:8);output =data(:,9);%随机提取 500 个样本为训练样本,268 个样本为预测样本_train=(n(1:500),:) ;output_train=output(n(1:500),:) ;_test=(n(501:768),:) ;output_test=output(n(501:768),:) ;%输入数据归一化[n,ps]=mapminmax(_train);%% BP 网络训练% %初始化网络结构net=newff(n,output_train,10);net.trainParam.epochs=1000;net.trainParam.lr=0.1;net.trainParam.goal=0.0000004;%% 网络训练net=train(net,n,output_train);%% BP 网络预测%预测数据归一化n_test=mapminmax( apply ,_test,ps);%网络预测输出BPoutput=sim(net,n_test);%% 结果分析%根据网络输出找出数据属于哪类BPoutput(find(BPoutput=0.5))=1;%% 结果分析%画出预测种类和实际种类的分类图figure(1)plo