Matlab工具箱中地BP与RBF函数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab工具箱中的BP与RBF函数
Matlab神经网络工具箱中的函数非常丰富,给网络设置适宜的属性,可以加快网络的学习速度,缩短网络的学习进程。
限于篇幅,仅对本章所用到的函数进展介绍,其它的函数与其用法请读者参考联机文档和帮助。
1 BP与RBF网络创建函数
在Matlab工具箱中有如表1所示的创建网络的函数,作为示例,这里只介绍函数newff、newcf、newrb和newrbe。
表 1 神经网络创建函数
(1) newff函数
功能:创建一个前馈BP神经网络。
调用格式:net = newff(PR,[S1S2...S Nl],{TF1 TF2...TF Nl},BTF,BLF,PF)
参数说明:
•PR - R个输入的最小、最大值构成的R×2矩阵;
•S i–S NI层网络第i层的神经元个数;
•TF i - 第i层的传递函数,可以是任意可导函数,默认为 'tansig',可设置为logsig,purelin等;
•BTF -反向传播网络训练函数,默认为 'trainlm',可设置为trainbfg,trainrp,traingd等;
•BLF -反向传播权值、阈值学习函数,默认为 'learngdm';
•PF -功能函数,默认为'mse';
(2) newcf函数
功能:创建一个N层的层叠(cascade)BP网络
调用格式:net = newcf(Pr,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)
参数同函数newff。
(3) newrb函数
功能:创建一个径向基神经网络。
径向基网络可以用来对一个函数进展逼近。
newrb函数用来创建一个径向基网络,它可以是两参数网络,也可以是四参数网络。
在网络的隐层添加神经元,直到网络满足指定的均方误差要求。
调用格式:net = newrb(P,T,GOAL,SPREAD)
参数说明:
•P:Q个输入向量构成的R×Q矩阵;
•T:Q个期望输出向量构成的S×Q矩阵;
•GOAL:均方误差要求,默认为0。
•SPREAD:分散度参数,默认值为1。
SPREAD越大,网络逼近的函数
越平滑,但SPREAD取值过大将导致在逼近变化比拟剧烈的函数时神经元过多,假如SPREAD取值过小,如此导致在逼近平滑函数时,导致神经元过多。
(4) newrbe函数
功能:创建一个精细径向基网络。
newrbe函数可以很快地根据设计向量创建一个0误差的径向基网络。
调用格式:Net=Newrbe(P,T,SPREAD)
参数说明:参数P,T和SPREAD同newrb函数中的参数P,T和SPREAD 含义一样。
2 网络训练函数
(1) Adapt函数
功能:神经网络单步训练函数。
调用格式:[net,Y,E,Pf,Af] = adapt(net,P,T,Pi,Ai)
参数说明:
Adapt函数调用由net.adaptF所指定的函数和net.adaptParam所指定的参数来训练网络。
在执行命令Adapt之前,可以预先指定训练函数net.adaptF和训练参数net.adaptParam。
输入参数:
•net –所要训练的网络;
•P - 网络的输入;
•T - 网络的期望输出,可选项,只在有教师训练时需要,一般不用,默认值为0;
•Pi –初始输入延迟,可选项,只在有输入延迟时需要,一般不用,默认值为0;
•Ai –初始层延迟,可选项,只在有层延迟时需要,默认值为0;
•输出参数:NET –训练后的网络;
• Y - 网络输出;
• E - 网络误差;
•Pf -训练后的输入延迟,一般不用.;
•Af -训练后的层延迟,一般不用。
ADAPT的参数有两种格式:阵列格式和矩阵格式。
阵列格式易于描述,最适合于多输入多输出网络。
当ADAPT的参数为阵列格式时:P - Ni×TS阵列, 阵列的每个元素P{i,ts}是一个Ri×Q的矩阵;
T - Nt×TS阵列, 阵列的每个元素P{i,ts}是一个Vi×Q的矩阵;
Pi - Ni×ID阵列, 阵列的每个元素{i,k}是一个Ri×Q的矩阵;
Ai - Nl×LD阵列, 阵列的每个元素{i,k}是一个Si×Q的矩阵;
其中:
Ni =
Nl =
Nt =
ID =
LD =
TS = Number of time steps
Q = Batch size
Ri = net.inputs{i}.size
Si = yers{i}.size
Vi = net.targets{i}.size
矩阵格式最适合于单输入单输出网络,但也可以用于多输入多输出网络。
每个矩阵元素通过把相应阵列参数元素存储到一个单一的矩阵来寻找。
当ADAPT的参数为矩阵格式时:
P-(sum of Ri)×Q matrix
T-(sum of Vi)×Q matrix
Pi-(sum of Ri)×(ID*Q) matrix
Ai-(sum of Si)×LD*Q) matrix
其中Pi, Ai, Pf和Af的列为最初的延迟条件到最近的延迟条件。
Pi{i,k}为时刻ts=k-ID的输入i;
Pf{i,k}为时刻ts=TS+k-ID的输入i;
Ai{i,k}为时刻ts=k-LD的层输出i;
Af{i,k}为时刻ts=TS+k-LD的层输出i。
(2) adaptwb函数
功能:网络权值和偏置单步训练函数
调用格式:
[net,Ac,El] = adaptwb(net,Pd,T,Ai,Q,TS)
info = adaptwb(code)
说明:adaptwb函数根据网络的学习函数(net.learnF)对网络的权值和偏置进展单步训练。
输入参数:
•net 所要训练的神经网络;
•Pd 延迟输入,是一个No×Ni×TS阵列,元素P{i,j,ts}是一个Zij×Q矩阵;
•Tl 各层的期望输出,Nl×TS阵列,元素P{i,ts}是一个Vi×Q矩阵或空矩阵;
•Ai 初始输入条件,Nl×LD阵列,元素Ai{i,k}是一个Si×Q矩阵;
•Q 输入向量的个数
•TS 步长
输出参数:
•net 更新后的网络
•Ac 总的层输出,Nl×(LD+TS)阵列,元素El{i,k}是一个Si×Q 矩阵或空矩阵。
•El 该层的误差
其中参数Ni、Nl、LD、Ri、Si和Vi同adapt函数中的参数Ni、Nl、LD、Ri、Si和Vi一样。
Zij = Ri*length(net.inputWeights{i,j}.delays) adaptwb(code)函数根据code返回有用的信息,code可以取为‘pnames’训练参数的名称
‘pdefaults’缺省的训练参数
如果要使一个网络使用adaptwb函数进展网络训练,需要作如下设置:
•设置net.adaptF为adaptwb(net.adaptParam将自动设为adaptwb 的缺省值);
•设置第i层各偏置的学习函数(net.biases{i}.learnF)和各权值的学习函数(net.inputWeights{i,j}.learnF 和yerWeights{i,j}.learnF)为各自的期望学习函数;
(3) train函数
功能:神经网络学习函数。
调用格式:
[net,tr] = train(net,P,T,Pi,Ai)
[net,tr] = train(net,P,T,Pi,Ai,VV,TV)
说明:
train函数根据net.trainF和net.trainParam训练网络net。
输入参数:
train函数的输入参数同adapt函数的输入参数一样。
输出参数:
•net –返回网络;
•tr –网络训练步数和性能;
Train函数的信号参数可以有两种格式:阵列或矩阵,输入参数的阵列格式和矩阵格式同adapt函数一样。
Train函数的第二种调用格式[net,tr] =train(NET,P,T,Pi,Ai,VV,TV)与其第一种格式的区别在于:第二种调用格式在训练完网络过程中进展网络测试,确认向量用来尽早终止训练,
以免过训练损害网络的普遍性,而第一种调用格式在训练过程中不进展这种测试。
如果,为给定/测试初始输入延迟条件,默认值为0;,为给定/测试层延迟条件,默认值为0;
(4) trainwb函数
功能:网络权值/偏置训练函数
调用格式:
[net,tr]=trainwb(net,Pd,Tl,Ai,Q,TS,VV)
info = trainwb(code)
说明:
输入参数:
•Pd 延迟输入,No×Ni×TS阵列,元素P{i,j,ts}是一个Dij×Q 矩阵,其中
◆Dij=Ri*length(net.inputWeights{i,j}.delays)
•VV 变量向量结构体或空矩阵
其它参数同adaptwb函数中相应的参数一样。
•输出参数:
•net 训练后的网络
•tr 每一步中各个值的训练记录,它有四个参量,tr.epoch为训练次数,tr.perf为训练性能,tr.vperf为验证性能,tr.tperf为测试性能。
同adaptwb函数一样,假如要设计一个用trainwb函数进展训练的网络,需要对网络作一些设置,设置的参数与设置方法同adaptwb一样。
3 网络初始化函数
(1) init函数
功能:网络初始化函数。
调用格式:init(net)
说明:根据由net.initF说明的网络初始化函数和net.initParam 说明的参数值重新初始化网络的权值和阈值。
示例:net = newp([0 1;-2 2],1); %创建一个感知器神经网络;
net.iw{1,1} %显示网络的输入权值,其结果为
ans =
00
P = [0 1 0 1; 0 0 1 1]; %网络的输入矩阵
T = [0 0 0 1]; %网络的输出矩阵
net = train(net,P,T); %对网络进展训练
net.iw{1,1} %显示训练后网络的输入权值,其结果为
ans =
1 1
net = init(net); %重新初始化网络
net.iw{1,1} %显示重新初始化后网络的输入权值,其结果为
ans =
0 0
(2) initlay函数
功能:网络层初始化函数。
调用格式:
net = initlay(net)
info= initlay(code)
说明:第一种调用格式根据网络各层的初始化函数yers{i}.initF 对网络相应层进展初始化,其中i为初始化层的序号;第二种调用格式根据code指定的代码返回一些有用的信息,其中code可以取•‘pnames’初始化参数的名称
•‘pdefaults’缺省的初始化参数
(3) initwb函数
功能:神经网络某一层的权值和偏置的初始化函数
调用格式:
net = initwb(net,i)
说明:initwb函数只对网络中的第i层的权值和偏置进展初始化。
(4) initzero函数
功能:将权值/偏置初始化为0的函数。
调用格式:
W=initzero(S,PR)
B=initzero(S,[1 1])
说明:initzero(S,PR)函数将网络的权值矩阵初始化为0矩阵;B=initzero(S,[1 1])将网络的偏置初始化为0,它返回一个0偏置向量。
其中S为神经元个数,PR为输入向量的X围。
4 网络学习函数
Matlab工具箱中的学习函数用于网络的设置,以配合adapt函数和train函数对网络进展训练,一般不单独调用。
(1) Learnp函数
功能:感知器权值和偏置值学习函数。
调用格式:[dW,LS] = learnp(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
[db,LS] = learnp(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,LS)
info= learnp(code)
参数说明:输入参数
W - S×R权值矩阵 (或 S×1 偏置向量);
P - R×Q 输入向量;
Z - S×Q 加权输入向量;
N - S×Q 网络输入向量;
A - S×Q输出向量;
T - S×Q l层期望向量;
E - S×Q 层误差向量;
gW - S×R 关于性能的梯度;
gA - S×Q 关于性能的输出梯度;.
D - S×S 节点距离;
LP –学习参数,它是一个空矩阵;
LS –学习状态,初始状态应为空;
返回参数:
dW - S×R 权值(或偏置)变化量矩阵;
LS –新的学习状态;
learnp(code)根据code代码返回相应的有用信息,code可以取为
●‘pnames’返回学习参数的名称
●‘pdefaults’返回默认的学习参数
●‘needg’如果该函数使用gW或gA,如此返回值为1。
(2) learngd函数
功能:梯度下降权值/偏置学习函数
调用格式:
[dW,LS] = learngd(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
[db,LS] = learngd(b,ones(1,Q),Z,N,A,T,E,gW,gA,D,LP,LS)
info = learngd(code)
其它学习函数的调用格式和参数同learnp一样,只是有的学习函数没有第二种调用格式而已,为节省篇幅起见,这里不再赘述。
5 网络仿真函数
SIM函数
功能:神经网络仿真函数。
只有在创建好一个网络后才能进展网络仿真。
调用格式:
[T,X,Y] = SIM('model',TIMESPAN,OPTIONS,UT)
[T,X,Y1,...,Yn] = SIM('model',TIMESPAN,OPTIONS,UT)
参数说明:
输出参数:
•T:返回的时间向量;
•X:返回的矩阵状态或结构格式状态;
•Y:返回的输出;
输入参数:
•Y1,...,Yn:只能用于框图模式,这里n为根输出块的个数;
•model:框图模型名称,即仿真的网络名,它必须在进展网络仿真前已经创建好;
•TIMESPAN:时间X围,写成[TStart TFinal]格式或[TStart OutputTimes TFinal]格式,其中TStart为起始时间,Tfinal为终止时间,OutputTimes为时间步长;
•OPTIONS:可选仿真参数,这是由SIMSET创建的一个结构体,一般不用;
UT:可选外部输入,UT = [T, U1, ... U n],或者是一个u=UT(t)的函数表达式,其中T = [t1, ..., t m]';
...
...
...
...
...
-7.72 3.72 21.25 38.60 55.56 73.28]; ...
...
...
...
...
86.12 84.94 83.78 82.65 81.55 80.45]; ...
...
...
...
...
0 1.0 2.0 3.0 4.0 5.0];
...
...
...
...
...
70.0 70.0 70.0 70.0 70.0 70.0];。