神经网络Newff使用方法

newff,已经obsolete,新函数似乎自动可以分割training set和testing set,实验中不想要这个功能,所以暂时还是使用习惯的newff,等有时间再熟悉新函数。

newff似乎也更新过一次使用方法,所以有些old的资料中的方法obsolete。总结一下,目前的newff方法。


MATLAB中运用神经网络时主要分为三步:设计、训练、测试:

  • 设计包括:
    • 设计每层神经元数目(输入层,隐含层,输出层)
    • 设定转移函数σ:(每一层的神经元基本上都会用同一个转移函数)
    • 设定训练方法:traingdx(梯度下降)、trainlm(Levenburg-Marquardt,一种结合了梯度下降法和牛顿法的方法)
    • 其他可选部分:误差函数(默认MSE),训练过程作图,等等。

 

  1. 简单的例子

P = [0 1 2 3 4 5 6 7 8 9 10];%Training Patterns (domain values)

T = [0 1 2 3 4 3 2 1 2 3 4];%Training Targets (range values)

net = newff([0 10],[5 1],{’tansig’ ’purelin’});

%Plot the original data points and the untrained output

Y = sim(net,P);

figure(1)

plot(P,T,P,Y,’o’)

title(’Data and Untrained Network Output’)

%Train the network and plot the results

net.trainParam.goal=0.01; %0 is the default- too small!

net.trainParam.epochs = 50; %For our sample, don’t train toolong

net = train(net,P,T);

X = linspace(0,10); %New Domain Points

Y = sim(net,X); %Network Output

figure(2)

plot(P,T,’ko’,X,Y)

%An alternative way to test training: postreg

figure(3)

Tout=sim(net,P); %Get network output for the training domain

[m,b,r]=postreg(T,Tout); %Performs a linear regression

 

注意:

  1. 输入值最小值为0,最大值为10,这是通过newff第一个变量设定的。如果具有m个输入特征,此变量,需要变成m行。
  2. 上面说了,newff第一个变量,用来设定输入特征的范围。有些人使用minmax来输入也可以,如下:

神经网络Newff使用方法_第1张图片

newff第二个变量,用来设定隐含层和输出层神经元的数目。第三个变量,设定转移函数:tansig(反正切),与默认的函数(sigmoidal)效果一样好。我们通常在输出层选择一个线性函数,所以我们选择(purelin)。

  1. 默认训练方法为(Levenburg-Marquardt,为梯度下降和牛顿法的结合。

你可能感兴趣的:(matlab,神经网络)