主要内容

layerGraph

网络层图表深度学习

描述

图层图指定具有更复杂的图形结构的深度学习网络的体系结构,其中层可以从多个层的输入并输出到多个层。具有此结构的网络称为导向非循环图(DAG)网络。创建一个后layerGraph对象,您可以使用对象函数来绘制图形并通过添加,删除,连接和断开连接来修改它。要培训网络,请使用图层图作为层数输入参数trainNetwork

创建

描述

例子

LGRAPH.=分层图创建一个空层图,该图层包含没有图层。您可以通过使用“将图层添加到空图”addlayers.函数。

例子

LGRAPH.=分层图(层数从网络层数组创建层图并设置层数财产。的层LGRAPH.以与相同的顺序连接层数.所有图层必须具有唯一的非空白名称。

例子

LGRAPH.=分层图(dagNet提取图层图Dagnetwork..例如,您可以提取备用网络的图层图以执行传输学习。

LGRAPH.=分层图(dlnet提取图层图dlnetwork.使用此语法使用adlnetworktrainNetwork函数或深层网络设计师

输入参数

全部展开

DAG网络,指定为Dagnetwork.目的。

用于自定义训练循环的网络,指定为adlnetwork目的。

为了dlnetwork输入,软件从学习参数中提取数字数据并将其转换为单精度。

属性

全部展开

网络图层,指定为a数组中。

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

每个表行表示图层图中的连接。第一列,,指定每个连接的来源。第二列,目的地,指定每个连接的目的地。连接源和目的地要么是层名,要么是表单'layername / ioname',在那里“IOName”是输入或输出的图层的名称。

数据类型:表格

网络输入层名称,指定为字符向量的单元格数组。

数据类型:细胞

网络输出层名称,指定为字符向量的单元格数组。

数据类型:细胞

对象的功能

addlayers. 将图层添加到图层图形
removelayers. 从层图中移除层
替换剂 在层图中替换层
ConnectLayers. 连接图层图形
disconnectLayers 在层图中断开层
情节 绘制神经网络层图

例子

全部折叠

创建一个空的层图和一系列图层。将图层添加到图层图并绘制图形。addlayers.按顺序连接图层。

lgraph = layerGraph;[imageInputLayer([32 32 3],]),'名称''输入') convolution2dLayer(3, 16岁,“填充”“相同”'名称'“conv_1”) batchNormalizationLayer ('名称'“BN_1”)剥离('名称''relu_1'));lgraph = addLayers (lgraph层);图绘图(LGROP)

图包含轴。轴包含Type Graphplot的对象。

创建一系列图层。

图层= [imageInputLayer([28 28 1],'名称''输入') convolution2dLayer(3, 16岁,“填充”“相同”'名称'“conv_1”) batchNormalizationLayer ('名称'“BN_1”)剥离('名称''relu_1'));

从图层数组中创建一个图层图。layerGraph连接所有的层层数顺序地。绘制图层图。

Lgraph = LayerGraph(层);图绘图(LGROP)

图包含轴。轴包含Type Graphplot的对象。

加载预制挤压罩网络。您可以使用此培训的网络进行分类和预测。

网= squeezenet;

为了对网络结构进行修改,首先对DAG网络的结构进行提取layerGraph然后可以使用的对象函数分层图修改网络架构。

LGRAPRE = LayerGraph(网)
LAPHRAGH =具有属性的图表图:图层:[68x1 nnet.cnn.layer.layer]连接:[75x2表]输入名称:{'data'} OutputNames:{'classificationLayer_predictions'}

为深度学习创建一个简单的有向无环图(DAG)网络。训练网络对数字图像进行分类。这个例子中的简单网络包括:

  • 主要分支,层依次连接。

  • 一种快捷连接包含单个1×1卷积层。快捷连接使参数渐变使得从输出层更容易流到网络的早期层。

将网络的主分支创建为层数组。添加层和多个输入元素明智。指定添加图层的输入数。所有图层必须具有名称,所有名称必须是唯一的。

图层= [imageInputLayer([28 28 1],'名称''输入')卷积2dlayer(5,16,“填充”“相同”'名称'“conv_1”) batchNormalizationLayer ('名称'“BN_1”)剥离('名称''relu_1')卷积2dlayer(3,32,“填充”“相同”'走吧'2,'名称'“conv_2”) batchNormalizationLayer ('名称'“BN_2”)剥离('名称''relu_2')卷积2dlayer(3,32,“填充”“相同”'名称'“conv_3”) batchNormalizationLayer ('名称'“BN_3”)剥离('名称''relu_3') additionLayer (2'名称''添加')普通Pooling2dlayer(2,'走吧'2,'名称''avpool') fullyConnectedLayer (10'名称'“俱乐部”) softmaxLayer ('名称''softmax') classificationLayer ('名称''ClassOutput'));

从图层数组中创建一个图层图。layerGraph连接所有的层层数顺序地。绘制图层图。

Lgraph = LayerGraph(层);图绘图(LGROP)

创建1乘1的卷积层,并将其添加到层图中。指定卷积过滤器的数量和步幅,以便激活大小与'relu_3'层。这种安排使添加层能够添加的输出'skipconv''relu_3'层。要检查图层是否在图形中,请绘制图层图。

32岁的skipConv = convolution2dLayer (1'走吧'2,'名称''skipconv');lgraph = addLayers (lgraph skipConv);图绘图(LGROP)

从中创建快捷方式连接'relu_1'层到了'添加'层。因为您指定了两个作为添加层的输入的数量时,所以该图层有两个名为的输入“三机”'in2'.的'relu_3'层已经连接到“三机”输入。连接'relu_1'层到了'skipconv'层和'skipconv'层到了'in2'输入的'添加'层。添加层现在会汇总输出'relu_3''skipconv'层。要检查层是否连接正确,绘制层图。

Lgraph = ConnectLayers(LAPHAGE,'relu_1''skipconv');Lgraph = ConnectLayers(LAPHAGE,'skipconv''添加/ in2');图绘制(lgraph);

加载训练和验证数据,其中包含28 × 28的数字灰度图像。

[XTrain, YTrain] = digitTrain4DArrayData;[XValidation, YValidation] = digitTest4DArrayData;

指定培训选项并对网络进行培训。trainNetwork每次使用验证数据验证网络验证频繁迭代。

选择= trainingOptions (“个”......'maxepochs',8,......“洗牌”'每个时代'......“ValidationData”{XValidation, YValidation},......'验证职业',30,......“详细”假的,......'plots''培训 - 进步');网= trainNetwork (XTrain YTrain、lgraph选项);

显示训练网络的属性。网络是一个Dagnetwork.目的。

net =具有属性的Dagnetwork:图层:[16×1 nnet.cnn.layer.layer]连接:[16×2表]输入名称:{'输入'} OutputNames:{'classOutput'}

分类验证图像并计算准确性。网络非常准确。

YPredicted =分类(净,XValidation);精度=平均值(YPredicted == YValidation)
精度= 0.9930

提示

  • 层图不能说明长短期记忆(LSTM)网络的结构。有关如何创建LSTM网络的详细信息,请参见长短期内存网络

在R2017B中介绍