matlab newff函数弃用了,Matlab关于newff的问题

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网络可以实现任意从输入到输出的非线性映射.但对于有限个输入模式到输出模式的映射,并不需要无限个隐层节点,这就涉及到如何选择隐层节点数的问题,而这一问题的复杂性,使得至今为止,尚未找到一个很好的解析式,隐层节点数往往根据前人设计所得的经验和自己进行试验来确定.一般认为,隐层节点数与求解问题的要求,输入输出单元数多少都有直接的关系.另外,隐层节点数太多会导致学习时间过长;而隐层节点数太少,容错性差,识别未经学习的样本能力低,所以必须综合多方面的因素进行设计.

隐层节点数的初始值可先由以下两个公式中的其中之一来确定[2,3].

(1)

或 (2)

式中:m,n分别为输入结点数目与输出结点数目,a为1~10之间的常数.

隐层结点数可根据式(1)或(2)得出一个初始值,然后利用逐步增长(先从一个较简单的网络开始,若不符合要求则逐步增加隐层单元数到合适为止)或逐步修剪(从一个较复杂的网络开始逐步删除隐层单元)法.

1.5 传输函数

BP网络中的传输函数通常采用S(sigmoid)型函数:

(3)

在某些特定情况下,还可能采用纯线性(pureline)函数.如果BP网络的最后一层是Sigmoid函数,那么整个网络的输出就限制在一个较小的的范围内(0~1之间的连续量);如果BP网络的最后一层是Pureline函数,那么整个网络的输出可以取任意值.

1.6 训练方法及其参数选择

针对不同的应用,BP网络提供了多种训练,学习方法,可供选择.在Matlab中训练网络有两类模式:增加方式(incremental mode)和批处理方式(batch mode).在增加方式中,每提交一次输入数据,权值和阈值都更新一次,增加方式更普遍的应用于动态网络;在批处理方式中,当所有的输入数据都被提交以后,权值和阈值才被更新,使用批处理方式只需为整个网络指定一个训练函数,在样本数比较多时,批处理方式比增加方式收敛速度快,而且许多改进的快速训练算法只能采用批处理方式.故本文只讨论批处理方式,以批处理方式来训练网络的函数是train,其语法主要格式为:

[net,tr]=train(NET,p,t)

式中:p和t分别为输入输出矩阵,NET为由newff产生的要训练的网络,net为修正后的网络,tr为训练的记录(训练步数epoch和性能perf).train根据在newff函数中确定的训练函数来训练,不同的训练函数对应不同的训练算法,详见表1.

训练时直接调用上述的函数名,调用前为下列变量赋初始值:net.trainParam.show——每多少轮显示一次;net.trainParam.lr——学习速度;net.trainParam.epochs——最大训练轮回数;net.trainParam.goal——目标函数误差.

表1 训练算法列表

函数

训练算法

备注

traingd

最速梯度下降算法

收敛速度慢,网络易陷于局部极小,学习过程常发生振荡

traingdm

有动量的梯度下降算法

收敛速度快于traingd

traingdx

学习率可变的BP算法

收敛速度快于traingd,仅用于批量模式训练

trainrp

弹性BP算法

用于批量模式训练,收敛速度快,数据占用存储空间小

traincgf

Fletcher-Reeves变梯度算法

是一种数据占用存储空间最小的变梯度算法,且速度通常比traingdx快得多,在连接权的数量很多时,时常选用该算法

traincgp

Polak-Ribiére变梯度算法

存储空间略大于traincgp,但对有些问题有较快的收敛速度

traincgb

Powell-Beale变梯度算法

性能略好于traincgp,但存储空间较之略大

trainscg

固定变比的变梯度算法

比其他变梯度算法需要更多迭代次数,但无需在迭代中进行线性搜索使每次迭代的计算量大大减小,存储空间与traincgf近似

trainbfg

BFGS拟牛顿算法

每次迭代过程所需的计算量和存储空间大于变梯度算法,数据存储量近似于Hessian矩阵,对规模较小的网络更有效

trainoss

变梯度法与拟牛顿法的折中算法

trainlm

Levenberg-Marquardt算法

对中等规模的前馈网络(多达数百个连接权)的最快速算法

trainbr

贝叶斯归一化法

可使网络具有较强的泛化能力,避免了以尝试的方法去决定最佳网络规模的大小

你可能感兴趣的:(matlab,newff函数弃用了)