MATLAB 2016b–神经网络工具箱中BP网络的实现
在干活的过程中整理下来的,希望对大家有帮助。
上一篇介绍的是MATLAB 2016b–神经网络工具箱中图形用户界面的使用
这一篇就介绍如何利用神经网络工具箱中包含的函数(其中包括BP网络创建函数、传递函数、训练函数等)进行编程,从而实现BP网络的具体功能与应用。
我用的是MATLAB 2016b,它新增了一些网络函数,并对老版中一些网络函数进行了调整。
1.BP神经网络基本函数
对于BP神经网络的实现,MATLAB神经网络工具箱提供了五个基本函数:feedforwardnet,configure,init,train和sim,它们分别对应五个基本步骤,即新建、配置、初始化、训练和仿真。
(1)新建函数feedforwardnet
功能:创建一个BP神经网络。
调用格式:net=feedforwardnet
net=feedforwardnet(hiddenSizes,trainFun)
参数说明:hiddenSizes为表示每个隐含层神经元个数的行向量,默认值为10。例如,如果需要创建一个有3个隐含层的神经网络,其中第一个隐含层有10个神经元,第二个隐含层有8个神经元,第三个隐含层有5个神经元,那么hiddenSizes为[10,8,5]。trianFcn为反向传播训练函数,可选的训练函数有’trainlm’(默认值) 、“trainbr”、“trainbfg”、“trainrp”、“trainscg”等,将在下面专门给予介绍。
新旧版比较:相较于使用旧版函数newff创建网络时需要逐层设置激活函数的形式、神经元数量、输入输出的范围以及训练方式等,新版函数feedforwardnet只需要设定每个隐藏层的大小及训练函数,使用更加简捷。
(2)配置函数configure
功能:对新创建的网络进行配置
调用格式:net=configure(net,P,T)
参数说明:net为创建的网络,P为输入矩阵,T为输出矩阵。配置是为了使网络的输入、输出、连接权重和阈值能够匹配输入矩阵和输出矩阵。train可以自动完成这一过程,但如果想在train之前就对网络进行仿真,则需先进行configure。
(3)初始化函数init
功能:对网络进行自定义的初始化。
调用格式:net=init(net)
参数说明:初始化是对连接权值和阈值进行初始化。BP神经网络在训练之前必须要对权值和阈值进行初始化,train()函数可以自动完成这一过程,但是无法重新赋初值。如果想重新初始化,可以应用init()函数,使网络恢复到初始化的情况。
(4)训练函数train
功能:对网络的权值和阈值进行反复地调整,以减少网络性能函数net.perforFen的值,直到达到预先的要求。
调用格式:[net,tr]=train (net,X,T,Xi,Ai,EW)
参数说明:X和T分别为输入/输出