newff()函数构建神经网络
net = newff(data,label,[8,8],{'tansig','purelin'},'trainlm')
data
:训练时网络的输入数据。newff函数会把data的一列当作一个样本,如果你的数据集是一行当作一个样本,记得将你的输入数据矩阵转置data.‘
label
:对应输入数据的标签,也可以看作真实输出。同上,newff函数会把label的一列当作一个样本的标签,如果你的数据集是一行当作一个样本,记得将你的输入数据矩阵转置label.‘
[8,8]
:用于确定神经网络隐藏层的层数以及每层的神经单元个数。[8,8]就表示该网络包含两个隐藏层,每个隐藏层有8个神经单元
{‘tansig’,‘purelin’}
:表示隐藏层所用的激活函数。{‘tansig’,‘purelin’}表示第一层用tansig激活函数,是一种S型激活函数;第二层用purelin激活函数,是一种线性型激活函数。常见的激活函数介绍:激活函数
‘trainlm’
:确定训练函数,默认为trainlm函数,该方法需要占用更大的存储空间,使用了Levenberg-Marquardt算法,对于中等规模的BP神经网络有最快的收敛速度。由于其避免了直接计算赫赛矩阵,从而减少了训练中的计算量,但需要较大内存量,随着神经元的增多,训练时间增加较大。常见的训练方法如下:
traingd:梯度下降算法
traingdm:带动量的梯度下降算法
traingda:学习率变化的梯度下降算法
traingdx:学习率变化带动量的梯度下降算法
trainrp:RPROP算法,内存需求小,适用于大型网络
trainoss:OneStep Secant Algorithm,计算量与内存需求较小,适用于大型网络
net.lw{i,j}和net.b{k}