Matlab的NNbox提供了建立神经网络的专用函数newff().用newff函数来确定网络层数,每层中的神经元数和传递函数,其语法为:
net=newff(PR,[S1,S2,… ,SN],{TF1,TF2,… ,TFN},BTF,BLF,PF)
式中:PR表示由每个输入向量的最大最小值构成的Rx2矩阵;Si表示第i层网络的神经元个数;TF表示第i层网络的传递函数,缺省为tansig,可选用的传递函数有tansig,logsig或purelin;BTF表示字符串变量,为网络的训练函数名,可在如下函数中选择:traingd,traingdm,traingdx,trainbfg,trainlm等,缺省为trainlm;BLF表示字符串变量,为网络的学习函数名,缺省为learngdm;BF表示字符串变量,为网络的性能函数,缺省为均方差'mse'.
newff在确定网络结构后会自动调用init函数用缺省参数来初始化网络中各个权重和阈值,产生一个可训练的前馈网络,即该函数的返回值为net.
下面针对以上各参数的确定作简要介绍.
1.1 网络层数
BP网络可以包含不同的隐层,但理论上已经证明,在不限制隐层节点数的情况下,两层(只有一个隐层)的BP网络可以实现任意非线性映射.在模式样本相对较少的情况下,较少的隐层节点,可以实现模式样本空间的超平面划分,此时,选择两层BP网络就可以了;当模式样本数很多时,减小网络规模,增加一个隐层是必要的,但BP网络隐层数一般不超过两层.
1.2 输入层节点数
输入层起缓冲存储器的作用,它接受外部的输入数据,因此其节点数取决于输入矢量的维数.
1.3 输出层节点数
输出层节点数取决于两个方面,输出数据类型和表示该类型所需的数据大小.
1.4 隐层节点数
一个具有无限隐层节点的两层BP网络可以实现任意从输入到输出的非线性映射.但对于有限个输入模式到输出模式的映射,并不需要无限个隐层节点,这就涉及到如何选择隐层节点数的问题,而这一问题的复杂性,