主要内容

layerGraph

(不推荐)深度学习的网络层图

不推荐使用 LayerGraph 对象。请改用 dlnetwork 对象。有关详细信息,请参阅版本历史记录

说明

层图将神经网络的架构指定为深度学习层的有向无环图 (DAG)。这些层可以有多个输入和多个输出。

创建对象

描述

lgraph = layerGraph 创建一个不包含任何层的空层图。您可以使用 addLayers 函数向空图添加层。

示例

lgraph = layerGraph(layers) 基于网络层数组创建层图,并设置 Layers 属性。lgraph 中的层以与 layers 中相同的顺序连接。

lgraph = layerGraph(net) 提取 SeriesNetworkDAGNetworkdlnetwork 对象的层图。例如,您可以提取预训练网络的层图来执行迁移学习。

输入参量

全部展开

深度学习网络,指定为 SeriesNetworkDAGNetworkdlnetwork 对象。

属性

全部展开

此 属性 为只读。

网络层,指定为 Layer 数组。

此 属性 为只读。

层连接,指定为具有两列的表。

每个表行表示层图中的一个连接。第一列 Source 指定每个连接的源。第二列 Destination 指定每个连接的目标。连接的源和目标或者是层名称,或者具有形式 "layerName/IOName",其中 "IOName" 是层输入或输出的名称。

数据类型: table

此 属性 为只读。

输入层的名称,指定为字符向量元胞数组。

数据类型: cell

此 属性 为只读。

输出层的名称,指定为字符向量元胞数组。

数据类型: cell

对象函数

addLayers向神经网络添加层
removeLayersRemove layers from neural network
replaceLayerReplace layer in neural network
connectLayers在神经网络中连接各层
disconnectLayersDisconnect layers in neural network
plot绘制神经网络架构

示例

全部折叠

为深度学习创建一个简单的层图。

此示例中的简单网络包括:

  • 一个具有顺序连接的层的主分支。

  • 一个包含单个 1×1 卷积层的快捷方式连接。快捷方式连接使参数梯度可以更轻松地从输出层流到较浅的网络层。

将网络的主分支创建为层数组。加法层按元素对多个输入求和。指定要求和的加法层的输入数目。为了便于以后添加连接,请为第一个 ReLU 层和加法层指定名称。

layers = [
    imageInputLayer([28 28 1])
    
    convolution2dLayer(5,16,'Padding','same')
    batchNormalizationLayer
    reluLayer('Name','relu_1')
    
    convolution2dLayer(3,32,'Padding','same','Stride',2)
    batchNormalizationLayer
    reluLayer
    convolution2dLayer(3,32,'Padding','same')
    batchNormalizationLayer
    reluLayer
    
    additionLayer(2,'Name','add')
    
    averagePooling2dLayer(2,'Stride',2)
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer];

根据层数组创建一个层图。layerGraph 按顺序连接 layers 中的所有层。绘制层图。

lgraph = layerGraph(layers);
figure
plot(lgraph)

Figure contains an axes object. The axes object contains an object of type graphplot.

创建一个 1×1 卷积层,并将其添加到层图中。指定卷积滤波器的数量和步幅,使激活大小与第三个 ReLU 层的激活大小匹配。这种排列使得加法层能够将第三个 ReLU 层和 1×1 卷积层的输出相加。要检查层是否在图中,请绘制层图。

skipConv = convolution2dLayer(1,32,'Stride',2,'Name','skipConv');
lgraph = addLayers(lgraph,skipConv);
figure
plot(lgraph)

Figure contains an axes object. The axes object contains an object of type graphplot.

创建从 'relu_1' 层到 'add' 层的快捷方式连接。由于您在创建加法层时将输入数目指定为 2,因此该层有两个输入,名为 'in1''in2'。第三个 ReLU 层已连接到 'in1' 输入。将 'relu_1' 层连接到 'skipConv' 层,并将 'skipConv' 层连接到 'add' 层的 'in2' 输入。加法层现在对第三个 ReLU 层和 'skipConv' 层的输出求和。要检查层是否正确连接,请绘制层图。

lgraph = connectLayers(lgraph,'relu_1','skipConv');
lgraph = connectLayers(lgraph,'skipConv','add/in2');
figure
plot(lgraph);

Figure contains an axes object. The axes object contains an object of type graphplot.

限制

  • 层图对象不包含量化信息。通过从量化网络中提取层图,然后使用 assembleNetworkdlnetwork 重新组合网络,可从网络中删除量化信息。

版本历史记录

在 R2017b 中推出

全部折叠