Main Content

network

创建自定义浅层神经网络

语法

net = network
net = network(numInputs,numLayers,biasConnect,inputConnect,layerConnect,outputConnect)

获得帮助

键入 help network/network

提示

要了解如何创建深度学习网络,请参阅 dlnetwork

说明

network 创建新的自定义网络。它用于创建网络,这些网络随后通过 feedforwardnetnarxnet 等函数进行自定义。

不带参量的 net = network 返回没有输入、层或输出的新神经网络。

net = network(numInputs,numLayers,biasConnect,inputConnect,layerConnect,outputConnect) 接受以下可选参量(以默认值显示):

numInputs

输入的数目,0

numLayers

层数,0

biasConnect

numLayers×1 布尔向量,0

inputConnect

numLayers×numInputs 布尔矩阵,0

layerConnect

numLayers×numLayers 布尔矩阵,0

outputConnect

numLayers 布尔向量,0

并返回

net

具有给定属性值的新网络

属性

架构属性

net.numInputs

0 或正整数

输入的数目。

net.numLayers

0 或正整数

层数。

net.biasConnect

numLayer×1 布尔向量

如果 net.biasConnect(i) 为 1,则层 i 具有偏置,并且 net.biases{i} 是描述该偏置的结构体。

net.inputConnect

numLayer×numInputs 布尔向量

如果 net.inputConnect(i,j) 为 1,则层 i 具有来自输入 j 的权重,并且 net.inputWeights{i,j} 是描述该权重的结构体。

net.layerConnect

numLayer×numLayers 布尔向量

如果 net.layerConnect(i,j) 为 1,则层 i 具有来自层 j 的权重,并且 net.layerWeights{i,j} 是描述该权重的结构体。

net.outputConnect

numLayers 布尔向量

如果 net.outputConnect(i) 为 1,则网络具有来自层 i 的输出,并且 net.outputs{i} 是描述该输出的结构体。

net.numOutputs

0 或正整数(只读)

基于 net.outputConnect 的网络输出数。

net.numInputDelays

0 或正整数(只读)

基于所有 net.inputWeights{i,j}.delays 的最大输入延迟。

net.numLayerDelays

0 或正数(只读)

基于所有 net.layerWeights{i,j}.delays 的最大层延迟。

子对象结构体属性

net.inputs

numInputs×1 元胞数组

net.inputs{i} 是定义输入 i 的结构体。

net.layers

numLayers×1 元胞数组

net.layers{i} 是定义层 i 的结构体。

net.biases

numLayers×1 元胞数组

如果 net.biasConnect(i) 为 1,则 net.biases{i} 是定义层 i 的偏置的结构体。

net.inputWeights

numLayers×numInputs 元胞数组

如果 net.inputConnect(i,j) 为 1,则 net.inputWeights{i,j} 是定义层 i 的来自输入 j 的权重的结构体。

net.layerWeights

numLayers×numLayers 元胞数组

如果 net.layerConnect(i,j) 为 1,则 net.layerWeights{i,j} 是定义层 i 的来自层 j 的权重的结构体。

net.outputs

numLayers 元胞数组

如果 net.outputConnect(i) 为 1,则 net.outputs{i} 是定义来自层 i 的网络输出的结构体。

函数属性

net.adaptFcn

网络自适应函数的名称或 ''

net.initFcn

网络初始化函数的名称或 ''

net.performFcn

网络性能函数的名称或 ''

net.trainFcn

网络训练函数的名称或 ''

参数属性

net.adaptParam

网络自适应参数

net.initParam

网络初始化参数

net.performParam

网络性能参数

net.trainParam

网络训练参数

权重和偏置值属性

net.IW

由输入权重值组成的 numLayers×numInputs 元胞数组

net.LW

由层权重值组成的 numLayers×numLayers 元胞数组

net.b

由偏置值组成的 numLayers×1 元胞数组

其他属性

net.userdata

结构体,可用于存储有用的值

示例

创建具有一个输入和两个层的网络

此示例说明如何创建一个没有任何输入和层的网络,然后将其输入和层的数量分别设置为 1 和 2。

net = network
net.numInputs = 1
net.numLayers = 2

您也可以用一行代码创建相同的网络。

net = network(1,2)

创建前馈网络并查看属性

此示例说明如何创建一个单输入的两层前馈网络。只有第一层有偏置。输入权重从输入 1 连接到层 1。层权重从层 1 连接到层 2。层 2 是网络输出并有一个目标。

net = network(1,2,[1;0],[1; 0],[0 0; 1 0],[0 1])

您可以使用以下代码查看网络子对象。

net.inputs{1}
net.layers{1}, net.layers{2}
net.biases{1}
net.inputWeights{1,1}, net.layerWeights{2,1}
net.outputs{2}

您可以修改任何网络子对象的属性。以下代码可更改这两个层的传递函数:

net.layers{1}.transferFcn = 'tansig';
net.layers{2}.transferFcn = 'logsig';

您可以查看从第一个输入到第一个层的连接的权重,如下所示。从输入到层的连接的权重存储在 net.IW 中。如果值尚未设置,则这些结果为空。

net.IW{1,1}

您可以查看从第一个层到第二个层的连接的权重,如下所示。各层间的连接的权重存储在 net.LW 中。同样,如果值尚未设置,则结果为空。

net.LW{2,1}

您可以查看第一个层的偏置值,如下所示。

net.b{1}

要将输入 1 中的元素数更改为 2,请设置每个元素的范围:

net.inputs{1}.range = [0 1; -1 1];

在训练网络后,您可以使用 sim 对网络进行仿真。例如,对有一个二元素输入向量的网络进行仿真。

p = [0.5; -0.1];
y = sim(net,p)

版本历史记录

在 R2006a 之前推出