在MATLAB中把定义的神经网络看作一个对象,对象还包括一些子对象:输入向量、网络层、输出向量、目标向量、权值向量和阈值向量等,这样网络对象和各子对象的属性共同确定了神经网络对象的特性。网络属性除了只读属性外,均可以按照约定的格式和属性的类型进行设置、修改、引用等。引用格式为:
网络名.[子对象].属性
例如:net.Input,net.biaConnect(1),net.inputConnect(1,2),net.input{1}.range。
在MATLAB命令窗口中逐条执行以下语句(newp、newff为网络创建函数),即可创建网络net1和net2。
p=[1,2;-1,1;0,1];net1=newp(p,2);
net2=newff([-11;-11],[15,2],{'tanig','purelin'},'traingd某','learngdm');
1.结构属性
结构属性决定了网络子对象的数目(包括输入向量、网络层向量、输出向量、目标向量、阈值向量和权值向量的数目)以及它们之间的连接关系。无论何时,结构属性值一旦发生变化,网络就会自动重新定义,与之相关的其他属性值也会自动更新。
(1)numInput属性
net.numInput属性定义了网络的输入向量数,它可以被设置为零或正整数。其值一般在用户定义网络中才被设置,而由MATLAB神经网络工
具箱中的网络定义函数所创建的网络,则输入向量就不止一个,而是多个。所以网络的输入向量数并不是网络输入元素的个数。
net.numInput属性值一旦改变,与输入向量相关的输入层连接向量(net.inputConnect)和输入层向量(net.input)会自动随之改变。
(2)numLayer属性
numLayer属性定义了网络的层数,它可以被设置为零或正整数。 net.numLayer属性值一旦改变,下列与网络相关的布尔代数矩阵就会随之改变:
net.biaConnectnet.inputConnectnet.layerConnectnet.targetConnect
下列与网络层相关的子对象细胞矩阵的大小也会随之改变:net.biaenet.inputWeightnet.layerWeightnet.outputnet.target
下列网络调整参数细胞矩阵的大小也会随之改变:net.IWnet.LWnet.b
细胞矩阵是将多个矩阵向量作为细胞矩阵的一个“细胞(Cell)”,细胞矩阵的各个元素值为对应细胞的大小和数值类型。
(3)biaConnect属性
net.biaConnect属性定义各个网络层是否具有阈值向量,其值为Nl某1布尔型向量(0或1),Nl为网络层数(net.Layer)。
可以通过访问net.biaConnect{i}的值,查看第i个网络层是否具有阈值向量。
net.biaConnect的属性值一旦改变,则阈值结构细胞矩阵(net.biae)和阈值向量细胞矩阵(net.b)将随之改变。
(4)inputConnect属性
net.inputConnect属性定义各网络层是否具有来自个输入向量的连接权,其值为Nl某Ni布尔型向量(0或1),Nl为网络层数(net.numLayer),Ni为网络输入向量数(net.numInput)。
可以通过访问net.inputConnect(i,j)的值,来查看第i个网络是否具有来自第j个输入向量的连接权。
net.inputConnect的属性值一旦改变,输入层权值细胞结构矩阵(net.inputWeight)和权值向量细胞矩阵(net.IW)将随之改变。
(5)layerConnect属性
net.layerConnect属性定义一个网络层是否具有来自另外一个网络层的连接权,其值为Nl某Nl的布尔型向量(0或1),Nl为网络层数(net.numLayer)。可以通过访问net.layerConnect(i,j)的值,来查看第i个网络层是否具有来自第j个网络层的连接权。
net.layerConnect的属性值一旦改变,网络层权值结构细胞矩阵 (net.layerWeight)和网络层权值向量细胞矩阵(net.IW)将随之改变。
(6)outputConnect属性
net.outputConnect属性定义各网络层是否作为输出层,其值为1某Nl的布尔型向量(0或1),Nl为网络层数(net.numLayer)。
可以通过访问net.outputConnect(i)的值来查看第i个网络层是否作为输出层。
net.outputConnect属性值一旦改变,网络输出层数目
(net.numOutput)和输出层结构细胞矩阵(net.output)将随之改变。
(7)targetConnect属性
net.targetConnect定义各网络层是否和目标向量有关,其值为1某Nl的布尔型向量(0或1),Nl为网络层数(net.numLayer)。
可以通过访问net.targetConnect(i)的值来查看第i个网络层是否和目标向量有关。
net.targetConnect属性值一旦改变,网络层目标向量的数目 (net.numOutput)和目标向量结构细胞矩阵(net.target)将随之改变。
(8)numOutput属性(只读)
net.numOtput属性值为输出向量的数目,它等于outputConnect矩阵中元素值为1(True)的个数之和,即:numOutput=um(net.outputConnect)。
(9)numTarget属性(只读)
net.numTarget属性值为输出向量的数目,它等于targetConnect矩阵中元素值为1(True)的个数之和,即:numTarget=um(net.targetConnect)。
(10)numInputDelay属性(只读)
net.numInputDelay属性定义进行网络仿真时输入向量的延迟量。其值总是设置为与网络输入相连的权值延迟量的最大值,即
numInputDelay=0;fori=1:net.numLayerforj=1:net.numInputifnet.inputConnect(i,j)
numInputDelay=ma某
([numInputDelaynet.inputWeight{i,j}.delay]);endend
(11)numLayerDelay属性(只读)
net.numLayerDelay属性定义进行网络仿真时网络层输出到哪员的延迟量。其值总是设置为与网络相连的权值延迟量的最大值,即
numLayerDelay=0;fori=1:net.numLayerforj=1:net.numLayerifnet.layerConnect(i,j)
numLayerDelay=ma某
([numLayerDelaynet.layerWeight{i,j}.delay]);end
end 函数属性
函数属性定义了一个网络在进行权值/阈值调整、初始化、误差性能计算或训练时采用的算法。
(1)adaptFcn属性
net.adaptFcn属性定义了网络进行权值/阈值调整时所采用的函数,它可以被设置为任意一个进行权值/阈值调整的函数名,包括train函数。
adapt函数一旦被调用,就可以实现网络权值/阈值的调整:[net,Y,E,Pf,Af]=adapt(NET,P,T,Pi,Ai)另外,用户可以自定义权值/阈值调整函数。
adaptFcn属性值一旦发生变化,网络的调整参数(net.adaptFcn)将被设置为新的调整函数所包含的参数及其默认参数值。
(2)initFcn属性
net.adaptFcn属性定义了网络初始化权值/阈值向量所采用的函数,它可以被设置为任意一个进行网络权值/阈值初始化的函数名,包括initlay(网络层初始化函数)工具箱函数。
init函数一旦被调用,就可以实现网络权值/阈值的初始化:net=init(net)
init属性值一旦发生变化,网络的初始化参数(net.initParam)将被设置为新的初始化函数所包含的参数及其默认参数值。
(3)performFcn属性
net.performFcn属性定义了网络用于衡量网络性能所采用的函数,它可以被设置为任意一个网络性能函数名。例如:mae---绝对平均误差性能函数(meanaboluteerror);me---均方误差性能函数(meanquarederror);mereg---
归一化均方误差性能函数(meanquarederrorwithregularization);e---平方和误差性能函数(umquarederror)。
performFcn属性值一旦发生变化,网络性能参数
(net.performParam)将被设置为新的性能函数所包含的参数及其默认值。
(4)trainFcn属性
net.trainFcn属性定义了网络用于训练网络性能所采用的函数,它可以被设置为任意一个训练函数名。
trainbfg---BFGS算法(拟牛顿反向传播算法)训练函数;trainbr---贝叶斯归一化法训练函数;
traincgb---Powell-Beale共轭梯度反向传播算法训练函数;traincgp---Polak-Ribiere变梯度反向传播算法训练函数;traingd---梯度下降反向传播算法训练函数;
traingda---自适应调整学习率的梯度下降反向传播算法训练函数;traingdm---附加动量因子的梯度下降反向传播算法训练函数;
traingd某---自适应调整学习率并附加动量因子的梯度下降反向传播算法训练函数;
trainlm---Levenberg-Marquardt反向传播算法训练函数;traino---OSS(onetepecant)反向传播算法训练函数;trainrp---RPROP(弹性BP算法)反向传播算法训练函数;
traincg---SCG(caledconjugategradient)反向传播算法训练函数;trainb---以权值/阈值的学习规则采用批处理的方式进行训练的函数;trainc---以学习函数依次对输入样本进行训练的函数;trainr---以学习函数随机对输入样本进行训练的函数。当调用train函数时,上述训练函数被用于训练网络:[net,tr]=train(NET,P,T,Pi,Ai)
trainFcn的属性值一旦发生变化,网络训练参数(net.trainParam)将被设置为新的训练函数所包含的参数及其默认参数值。
参数属性
(1)adaptParam属性
net.adaptParam属性定义为当前网络权值/阈值调整函数的参数及参数值,取决于当前的权值/阈值调整函数(net.adaptFcn),可以查看有关调整函数的帮助以获得这些参数及参数值。在MATLAB命令窗口中输入命令:
help(net.adaptFcn)
也可以获得这些参数以及参数值的具体描述。(2)initParam属性 net.initParam属性定义当前初始化函数的参数及参数值,取决于当前的初始化函数(net.initFcn),可以查看有关初始化函数的帮助获得这些参数及参数值。在MATLAB命令窗口中输入名利:
help(net.initFcn)
也可获得这些参数及参数值的具体描述。(3)performParam属性 net.performParam属性定义当前函数的参数及参数值,取决于当前的性能函数(net.performFcn),可以查看有关性能函数的帮助获得这些参数以及参数值。在MATLAB命令窗口中输入:
help(net.performFcn)也可获得这些参数及参数值的具体描述。(4)trainParam属性
net.trainParam属性定义当前训练函数的参数及参数值,取决于当前的训练函数(net.trainFcn),可以查看有关训练函数的帮助获得这些参数以及参数值。在MATLAB命令窗口中输入命令:
help(net.trainFcn)也可获得这些参数及参数值的具体描述。 权值和阈值属性:
权值和阈值的属性定义了网络的可调整参数:权值向量和阈值向 量。
(1)IW属性
net.IW属性定义了从网络输入向量到网络层的权值向量(即输入层的权值向量)结构。其值为Nl某Ni的细胞矩阵,Nl为网络层数(net.numLayer),Ni为输入向量数(net.numInput)。通过访问
net.IW{i,j},可以获得第i个网络层来自第j个输入向量的权值向量值。
(2)LW属性
net.LW定义了从一个网络层到另一个网络层的权值向量结构。其值为Nl某Nl的细胞矩阵,Nl为网络层数(net.numLayer)。通过访问net.LW{i,j},可以获得第i个网络层来自第j个网络层的权值向量值。
(3)b属性
net.b属性定义各网络层的阈值向量结构。其值Nl某1的细胞矩阵,Nl为网络层(net.numLayer)。通过访问net.b{i},可以获得第i个网络层的阈值向量值。 其他属性:
uerdata 属性:
net.uerdata属性为用户提供了增加关于网络对象的用户信息的地方,它预先只定义了一个字段,其值为一提示信息:
net.uerdata=note:'Putyourcutomnetworkinformationhere.' 子对象的属性:
子对象的属性定义了网络的各个子对象:输入向量、网络层、输出 向量、目标向量、权值向量和阈值向量的属性。 1.输入向量
net.input,该子对象的属性详细定义了网络的每个输入向量的每一个输入量。例如:
net1.input=net2.input{[1某1truct]}通过访问net.input{i}可以获得第i个输入向量的属性值。(1)range属性
net.input{i}.range定义了第i个输入向量中每个元素的取值范围,其值是一个R某2的矩阵,R为输入向量的元素个数。矩阵的第一列是每个元素的最小值,矩阵的第二列是每个元素的最大值。它包含了两个信息:a.输入向量R的元素个数(也就是输入变量的个数);b.每个输入变量的取值区间。从而确定了输入向量的规模,另外range属性值还用于在一些初始化函数中确定连接输入向量的权值和阈值的初值。
(2)ize属性
net.input{i}.ize定义了网络各输入向量的元素数目,可以被设置为零或正整数。当其值发生变化时,表明输入向量的元素数目发生了变化,那么相应的range属性值(net.input{i}.range)、与之相连接的权值的
ize属性值(net.inputWeight{:,i}.ize)及输入权值向量(net.IW{:,i})的大小会自动作相应变化。
(3)uerdata属性
net.input{i}..uerdata和net.uerdata为用户提供了关于输入向量的用户信息的地方,它预先只定义了一个字段,其值为一提示信息:net.input{i}.uerdata=note:'Putyourcutominputinformationhere'
子对象的属性:2.网络层
net.layer,该子对象的属性详细定义了网络的每一个网络层。通过 访问net.layer{i}可以获得第i个网络层的属性值: (1)dimenion属性
net.Layer{i}.dimenion属性定义了第i个网络层神经元的位数。对于自组织映射的多维方式,能够设置网络层的神经元维数是很重要的。net.layer{i}.dimenion可以被设置成所有元素值为零或正整数的行向量,此时,行向量所有元素的乘积即为该网络层的神经元数。
当采用网络拓扑函数(net.layer{i}.topologyFcn)计算神经元在网络层中的位置(net.layer{i}.poition)时,将用到网络层神经元维数。net.layer{i}.dimenion属性一旦改变,网络层的大小
(net.layer{i}.ize)、网络层神经元的位置(net.layer{i}.poition)以及了两个神经元之间的距离(net.layer{i}.ditance)都会随之改变。
(2)ditanceFcn属性
net.layer{i}.ditanceFcn,该属性定义一个函数,用于第i个网络层中的神经元之间距离的计算,它是根据神经元的位置
(net.layer{i}.poition)来进行计算的。神经元的距离用于自组织映射神经网络。
该属性可被设置成神经网络工具箱中的以下距离函数:bo某dit---计算两个位置向量之间距离的距离函数;dit---欧几里得(Euclidean)距离权值函数;linkdit---连接距离函数;
mandit---曼哈顿(Manhattan)距离权值函数。(3)ditance属性(只读)
net.layer{i}.diance,该属性定义第i个网络层中神经元之间的距离,这些距离用于自组织映射神经网络。其值为网络层距离函数(net.layer{i}.ditanceFcn)的计算结果,是通过网络层神经元的位置(net.layer{i}.poition)进行计算的。
(4)initFcn属性
net.layer{i}.initFcn,如果网络初始化函数(net.initFcn)设置为initlay,则该属性定义为第i个网络层的初始化函数。 该属性可被设置为:
initnw---NW(Nguyen-Widrow)网络层初始化函数;
initwb---通过权值和阈值进行初始化的网络层初始化函数。 (5)netInputFcn属性
net.layer{i}.netInputFcn属性定义一个网络输入函数,以给定的权值和阈值计算第i个网络层的输入。 该属性可被设置为:
netprod---求积网络输入函数; netum---求和网络输入函数。 (6)poition属性(只读)
net.layer{i}.poition,该属性定义第i个网络层中神经元的位置,这些位置用于自组织映射。其值为网络拓扑结构函数
(net.layer{i}.topologyFcn)关于位置的计算结果,它是通过网络层神经元维数(net.layer{i}.dimenion)进行计算的。
可以用plotom函数画出网络层神经元的位置图。例如:plotom(net2.layer{1}.poition)
(7)ize属性
net.layer{i}.ize,该属性定义第i网络层中的神经元数目,其值可以设置为零活正整数。
其值一旦发生变化,则所有的net.inputWeight{i,:}.ize(连接到该网络层的输入权值向量元素的数目),net.layerWeight{:,i}.ize(该网络层连接到其他网络层权值向量元素的数目),
net.inputWeight{i,:}.ize(其他网络层连接到该网络层权值向量元素的数目),net.bia{i}.ize(该网络层阈值向量元素的数目)等都将随
之改变。与之相关的net.IW{i,:},net.LW{i,:},net.LW{:,i}和biae(net.b{i})向量的维数也会随之改变。
同时网络层神经元的维数(net.layer{i}.dimenion)将被设置成与该属性相同的值,这仅适用于神经元的维数为一维的情况;对于多维情况,应该直接设置net.layer{i}.dimenion,而不应使用ize属性进行设置。
(8)topologyFcn属性
net.layer{i}.topologyFcn,该属性定义一拓扑结构函数,用于计算第i个网络层中的神经元位置(net.layer{i}.poition),该位置是通过网络层神经元维数net.laye{i}.dimenion进行计算的。其值可以设成:
gridtop---网状网络层拓扑结构函数;
he某top---六边形网络层拓扑结构函数;randtop---随机网络层拓扑结构函数。
TopologyFcn的属性值一旦改变,则网络层神经元的位置(net.layer{i}.poition)也会随之更新。
(9)tranferFcn属性
net.layer{i}.tranferFcn,该属性定义网络的传输函数,用于计算第i个网络层的输出,该输出是通过给定的网络层输入值进行计算的。其值可以设置成:
[Y,Pf,Af]=im(net,P,Pi,Ai) (10)uerdata属性
net.layer{i}.uerdata,该属性为用户提供增加关于网络层向量的用户信息的地方,它预先只定义一个字段,其值为一提示信息:net.layer{i}.uerdata=note:'Putyourcutomlayerinformationhere.'
用户可以通过修改net.layer{i}.uerdata.note的值,增加关于网络层的用户信息。 子对象的属性:
3.输出向量
net.output,该子对象的属性详细定义了网络的每一个输出向
量。每个输出向量的结构属性值可以通过net.output{i,j}进行访问。 (1)ize属性
net.output{i}.ize,该属性定义了第i个网络层输出向量中元素的个数,其值为第i个网络层神经元的数目(net.layer{i}.ize)。
(2)uerdata属性
net.output{i}.uerdata,该属性为用户提供了增加关于第i个网络层输出向量的用户信息的地方,它预先只定义一个字段,其值为一提示信息:
net.output{i}=note:'Putyourcutomoutputinformationhere.' 用户可以通过修改net.output{i}.uerdata.note的值,增加关于第i个网络层输出向量的用户信息。
4.目标向量
net.target,该子对象的属性详细定义了网络的每一个目标向量。
每个目标向量的结构属性值可以通过net.target{i,j}来访问。 (1)ize属性
net.target{i}.ize,该属性定义了第i个网络层目标向量中元素的个数,其值为第i个网络层神经元的数目(net.layer{i}.ize)。
(2)uerdata属性
net.target{i}.uerdata,该属性为用户提供了增加关于第i个网络层目标向量的用户信息的地方,它预先只定义一个字段,其值为一提示信息:
net.output{i}=note:'Putyourcutomoutputinformationhere.' 用户可以通过修改net.target{i}.uerdata.note的值,增加关于第i个网络层目标向量的用户信息。
5.阈值向量
net.biae{i},该子对象的属性详细定义网络的每一个阈值向量。 每个阈值向量的结构属性值可以通过net.biae{i}进行访问。 (1)initFcn属性
net.biae{i}.initFcn,该属性定义了第i个网络层阈值向量的初始化函数,如果网络的初始化函数为initlay,则第i个网络层阈值向量的初始化函数的函数为initwb。其值可以设成神经网络工具箱中的以下初始化函数:
initcon---“良心(concience)”阈值初始化函数;
initzero---零权值/阈值初始化函数;rand---对称随机权值/阈值初始化函数;
除了表中的初始化函数,还可以自定义初始化函数。当init函数被调用时,initFcn定义的函数将对第i个层的阈值向量(net.biae{i})进行初始化:net=init(net)
(2)learn属性
net.biae{i}.learn,该属性定义第i个阈值向量在训练和调整过程中是否变化。其值可以设置为0或1。它容许或禁止在训练(train)和调整(adapt)过程中对阈值向量进行学习:
[net,Y,E,Pf,Af]=adapt(NET,P,T,Pi,Ai)[net,tr]=train(NET,P,T,Pi,Ai)
(3)learnFcn属性
net.biae{i}.learnFcn,如果网络的训练函数是trainb、trainc和trainr,或者网络的调整函数为train,则该属性定义第i个网络层阈值向量在训练和调整学习过程中的学习函数。其值可以设置成神经网络工具箱中的如下函数名:
learncon---“良心(concience)”阈值初始化函数;
learngd---梯度下降权值/阈值学习函数;learngdm---附加动量因子的梯度下降权值/阈值学习函数;
learnp---感知器权值/阈值学习函数;
learnpn---归一化感知器权值/阈值学习函数;learnwh---WH(Widrow-Hoff)权值/阈值学习规则;该属性值一旦改变,则阈值向量的
学习参数(net.biae{i}.learnParam)将被新定义的学习函数的参数及其默认参数值代替。
(4)learnParam属性
net.biae{i}.learnParam,该属性定义了第i个网络层阈值向量当前学习函数的参数及参数值,其值取决于当前的学习函数(net.biae{i}.learnFcn),可以通过如下查阅获得:
help(net.biae{i}.earnFcn) (5)ize属性(只读)
net.biae{i}.ize,该属性定义了第i个网络层阈值向量元素的数目,其值为底i个网络层神经元的数目(net.layer{i}.ize)。
(6)uerdata属性
net.biae{i}.uerdata,该属性为用户提供了增加关于第i个网络层阈值的用户信息的地方,它预先只定义一个字段,其值为一提示信息:net.biae{i}=note:'Putyourcutomoutputinformationhere.'
用户可以通过修改net.biae{i}.uerdata.note的值,增加关于第i个网络层目标向量的用户信息。
因篇幅问题不能全部显示,请点此查看更多更全内容