神经网络对象属性
下列属性定义网络的基本特征。Neural Network Subobject Properties描述定义网络细节的属性。
常规
下列是神经网络的常规属性。
net.name
此属性由定义网络名称的字符串组成。网络创建函数(例如 feedforwardnet
)会适当地定义此属性。但它可以根据所需设置为任何字符串。
net.userdata
用户可使用此属性向网络对象添加自定义信息。仅一个字段是预定义的。它包含一条向所有 Deep Learning Toolbox™ 用户发出的秘密消息:
net.userdata.note
架构
这些属性确定网络子对象(包含输入、层、输出、目标、偏置和权重)的数量以及它们之间的连接方式。
net.numInputs
此属性定义网络接收的输入的数目。它可以设置为 0 或正整数。
Clarification. 网络输入的数目和网络输入的大小不是同一件事。输入的数目定义网络像接收输入一样接收的向量的组数。每个输入的大小(即每个输入向量中的元素数目)由输入大小 (net.inputs{i}.size
) 确定。
大多数网络只有一个输入,其大小由问题决定。
副作用. 对此属性的任何更改,都会导致定义从输入到层的连接的矩阵的大小 (net.inputConnect
) 发生更改,以及输入子对象元胞数组的大小 (net.inputs
) 发生更改。
net.numLayers
此属性定义网络的层数。它可以设置为 0 或正整数。
副作用. 对此属性的任何更改都会更改定义与层的连接的每个布尔矩阵的大小:
net.biasConnect net.inputConnect net.layerConnect net.outputConnect
并更改子对象结构体组成的每个元胞数组的大小(其大小取决于层数):
net.biases net.inputWeights net.layerWeights net.outputs
并且还更改每个网络的可调参数属性的大小:
net.IW net.LW net.b
net.biasConnect
此属性定义哪些层具有偏置。它可以设置为由布尔值组成的任意 N×1 矩阵,其中 Nl 是网络层数 (net.numLayers
)。第 i 层是否存在偏置可通过以下属性的 1(或 0)表示
net.biasConnect(i)
副作用. 对此属性的任何更改,都会更改偏置元胞数组 (net.biases
) 中的结构体存在与否,以及偏置向量元胞数组 (net.b
) 中的向量存在与否。
net.inputConnect
此属性定义哪些层有来自输入的权重。
它可以设置为由布尔值组成的任意 Nl×Ni 矩阵,其中 Nl 是网络层数 (net.numLayers
),Ni 是网络输入数 (net.numInputs
)。从第 j 个输入进入第 i 层的权重存在与否通过 net.inputConnect(i,j)
的 1(或 0)表示。
副作用. 对此属性的任何更改,都会更改输入权重子对象元胞数组 (net.inputWeights
) 中的结构体存在与否,以及输入权重矩阵元胞数组 (net.IW
) 中的矩阵存在与否。
net.layerConnect
此属性定义哪些层有来自其他层的权重。它可以设置为由布尔值组成的任意 Nl×Nl 矩阵,其中 Nl 是网络层数 (net.numLayers
)。从第 j 层进入第 i 层的权重存在与否通过以下属性的 1(或 0)表示
net.layerConnect(i,j)
副作用. 对此属性的任何更改,都会更改层权重子对象元胞数组 (net.layerWeights
) 中的结构体存在与否,以及层权重矩阵元胞数组 (net.LW
) 中的矩阵存在与否。
net.outputConnect
此属性定义哪些层生成网络输出。它可以设置为由布尔值组成的任意 1×Nl 矩阵,其中 Nl 是网络层数 (net.numLayers
)。来自第 i 层的网络输出存在与否通过 net.outputConnect(i)
的 1(或 0)表示。
副作用. 对此属性的任何更改都会更改网络输出的数目 (net.numOutputs
),以及输出子对象组成的元胞数组 (net.outputs
) 中是否存在结构体。
net.numOutputs(只读)
此属性指示网络有多少个输出。它始终等于 net.outputConnect
中 1 的数目。
net.numInputDelays(只读)
此属性指示仿真网络时输入必须延迟的时间步数。它始终设置为与任何网络输入权重相关联的最大延迟值:
numInputDelays = 0; for i=1:net.numLayers for j=1:net.numInputs if net.inputConnect(i,j) numInputDelays = max( ... [numInputDelays net.inputWeights{i,j}.delays]); end end end
net.numLayerDelays(只读)
此属性指示仿真网络时层输出必须延迟的时间步数。它始终设置为与任何网络层权重相关联的最大延迟值:
numLayerDelays = 0; for i=1:net.numLayers for j=1:net.numLayers if net.layerConnect(i,j) numLayerDelays = max( ... [numLayerDelays net.layerWeights{i,j}.delays]); end end end
net.numWeightElements(只读)
此属性指示网络中权重和偏置值的数目。它是存储在以下两个元胞数组中的矩阵的元素总数:
net.IW new.b
子对象结构体
这些属性由相关结构体的元胞数组组成,这些结构体定义网络的每项输入、层、输出、目标、偏置和权重。
Neural Network Subobject Properties中说明了每种子对象的属性。
net.inputs
此属性包含每个网络输入的属性结构体。它始终是一个由输入结构体组成的 Ni×1 元胞数组,其中 Ni 是网络输入的数目 (net.numInputs
)。
定义第 i 个网络输入的属性的结构体位于
net.inputs{i}
如果一个神经网络只有一个输入,则无需元胞数组表示法即可访问 net.inputs{1}
,如下所示:
net.input
输入属性. 请参阅Inputs,了解输入属性的说明。
net.layers
此属性包含每个网络层的属性结构体。它始终是一个由层结构体组成的 Nl×1 元胞数组,其中 Nl 是网络层的数目 (net.numLayers
)。
定义第 i 层的属性的结构体位于 net.layers{i}
。
层属性. 请参阅Layers,了解层属性的说明。
net.outputs
此属性包含每个网络输出的属性结构体。它始终是一个 1×Nl 元胞数组,其中 Nl 是网络输出的数目 (net.numOutputs
)。
如果 net.outputConnect(i)
为 1(或 0),则定义来自第 i 层(或空矩阵 []
)的输出的属性的结构体位于 net.outputs{i}
中。
如果一个神经网络在层 i
上只有一个输出,则无需元胞数组表示法即可访问 net.outputs{i}
,如下所示:
net.output
输出属性. 请参阅Outputs,了解输出属性的说明。
net.biases
此属性包含每个网络偏置的属性结构体。它始终是一个 Nl×1 元胞数组,其中 Nl 是网络层的数目 (net.numLayers
)。
如果 net.biasConnect(i)
为 1(或 0),则定义与第 i 层(或空矩阵 []
)相关联的偏置的属性的结构体位于 net.biases{i}
中。
偏置属性. 请参阅Biases,了解偏置属性的说明。
net.inputWeights
此属性包含每个网络输入权重的属性结构体。它始终是一个 Nl×Ni 元胞数组,其中 Nl 是网络层数 (net.numLayers
),Ni 是网络输入的数目 (net.numInputs
)。
如果 net.inputConnect(i,j)
为 1(或 0),则定义从第 j 个输入(或空矩阵 []
)进入第 i 层的权重的属性的结构体位于 net.inputWeights{i,j}
中。
输入权重属性. 请参阅Input Weights,了解输入权重属性的说明。
net.layerWeights
此属性包含每个网络层权重的属性结构体。它始终是一个 Nl×Nl 元胞数组,其中 Nl 是网络层的数目 (net.numLayers
)。
如果 net.layerConnect(i,j)
为 1(或 0),则定义从第 j 层(或空矩阵 []
)进入第 i 层的权重的属性的结构体位于 net.layerWeights{i,j}
中。
层权重属性. 请参阅Layer Weights,了解层权重属性的说明。
函数
下列属性定义当网络要自适应、初始化、测量其性能或训练时要使用的算法。
net.adaptFcn
此属性定义网络自适应时要使用的函数。它可以设置为任何网络自适应函数的名称。每当调用 adapt
时,都使用网络自适应函数来执行自适应。
[net,Y,E,Pf,Af] = adapt(NET,P,T,Pi,Ai)
要查看函数列表,请键入 help nntrain
。
副作用. 每当更改此属性时,网络的自适应参数 (net.adaptParam
) 都会设置为包含新函数的参数和默认值。
net.adaptParam
此属性定义当前自适应函数的参数和值。对当前自适应函数调用 help
可获得每个字段的说明:
help(net.adaptFcn)
net.derivFcn
此属性定义当使用有监督算法(如反向传播)训练网络时用于计算误差梯度和雅可比矩阵的导函数。您可以将此属性设置为任何导函数的名称。
要查看函数列表,请键入 help nnderivative
。
net.divideFcn
此属性定义当使用有监督算法(如反向传播)训练网络时要使用的数据划分函数。您可以将此属性设置为划分函数的名称。
要查看函数列表,请键入 help nndivision
。
副作用. 每当更改此属性时,网络的自适应参数 (net.divideParam
) 都会设置为包含新函数的参数和默认值。
net.divideParam
此属性定义当前数据划分函数的参数和值。要了解每个字段意义的说明,请键入以下命令:
help(net.divideFcn)
net.divideMode
此属性定义当调用数据划分函数时要划分的目标数据维度。对于静态网络,其默认值为 'sample'
;对于动态网络,其默认值为 'time'
。它也可以设置为 'sampletime'
来同时按样本和时间步划分目标,设置为 'all'
来按每个标量值划分目标,或设置为 'none'
来表示根本不划分数据(在这种情况下,所有数据均用于训练,没有数据用于验证或测试)。
net.initFcn
此属性定义用于初始化网络的权重矩阵和偏置向量的函数。每当调用 init
时,都会使用初始化函数来初始化网络:
net = init(net)
副作用. 每当更改此属性时,网络的初始化参数 (net.initParam
) 都会设置为包含新函数的参数和默认值。
net.initParam
此属性定义当前初始化函数的参数和值。对当前初始化函数调用 help
可获得每个字段意义的说明:
help(net.initFcn)
net.performFcn
此属性定义用于测量网络性能的函数。每当调用 train
时,都会在训练过程中使用性能函数来计算网络性能。
[net,tr] = train(NET,P,T,Pi,Ai)
要查看函数列表,请键入 help nnperformance
。
副作用. 每当更改此属性时,网络的性能参数 (net.performParam
) 都会设置为包含新函数的参数和默认值。
net.performParam
此属性定义当前性能函数的参数和值。对当前性能函数调用 help
可获得每个字段意义的说明:
help(net.performFcn)
net.plotFcns
此属性由字符串行元胞数组组成,定义与网络相关联的绘图函数。train
函数打开的神经网络训练窗口为每个绘图函数显示一个按钮。在训练期间或训练后点击该按钮可打开所需绘图。
net.plotParams
此属性由结构体行元胞数组组成,定义 net.plotFcns
中每个绘图函数的参数和值。对每个绘图函数调用 help
可获得每个字段意义的说明:
help(net.plotFcns{i})
net.trainFcn
此属性定义用于训练网络的函数。它可以设置为每当调用 train
时用于训练网络的任何训练函数的名称。
[net,tr] = train(NET,P,T,Pi,Ai)
要查看函数列表,请键入 help nntrain
。
副作用. 每当更改此属性时,网络的训练参数 (net.trainParam
) 都会设置为包含新函数的参数和默认值。
net.trainParam
此属性定义当前训练函数的参数和值。对当前训练函数调用 help
可获得每个字段意义的说明:
help(net.trainFcn)
权重和偏置值
下列属性定义网络的可调参数:其权重矩阵和偏置向量。
net.IW
此属性定义从网络输入进入各层的权重的权重矩阵。它始终是一个 Nl×Ni 元胞数组,其中 Nl 是网络层数 (net.numLayers
),Ni 是网络输入的数目 (net.numInputs
)。
如果 net.inputConnect(i,j)
为 1
(或 0
),则从第 j 个输入(或空矩阵 []
)进入第 i 层的权重的权重矩阵位于 net.IW{i,j}
中。
该权重矩阵的行数和其进入的层的大小一样大 (net.layers{i}.size
)。其列数与输入大小和权重相关联的延迟数的乘积一样多:
net.inputs{j}.size * length(net.inputWeights{i,j}.delays)
在某些网络中,预处理函数 net.inputs{i}.processFcns
默认指定为 'removeconstantrows'
。在这种情况下,如果网络输入 X
包含 m
个行,其中所有行元素具有相同的值,则权重矩阵的列数比上述乘积少 m
个。有关网络输入 X
的详细信息,请参阅 train
。
这些维度也可以从输入权重属性中获取:
net.inputWeights{i,j}.size
net.LW
此属性定义从其他层进入各层的权重的权重矩阵。它始终是一个 Nl×Nl 元胞数组,其中 Nl 是网络层的数目 (net.numLayers
)。
如果 net.layerConnect(i,j)
为 1(或 0),则从第 j 层(或空矩阵 []
)进入第 i 层的权重的权重矩阵位于 net.LW{i,j}
中。
该权重矩阵的行数和其进入的层的大小一样大 (net.layers{i}.size
)。其列数与层的大小和权重相关联的延迟数的乘积一样多:
net.layers{j}.size * length(net.layerWeights{i,j}.delays)
这些维度也可以从层权重属性中获取:
net.layerWeights{i,j}.size
net.b
此属性定义具有偏置的每层的偏置向量。它始终是一个 Nl ×1 元胞数组,其中 Nl 是网络层的数目 (net.numLayers
)。
如果 net.biasConnect(i)
为 1(或 0),则第 i 层(或空矩阵 []
)的偏置向量位于 net.b{i}
中。
偏置向量中的元素数目始终等于与其相关联的层的大小 (net.layers{i}.size
)。
此维度也可从偏置属性中获得:
net.biases{i}.size
另请参阅
feedforwardnet
| patternnet
| network