layerGraph

用于深度学习的网络层图

描述

阿层图指定与其中层可具有从多个层,并输出到多个层输入的更复杂的图形结构一个深度学习网络的体系结构。具有这种结构的网络被称为有向无环图(DAG)的网络。当你创建一个layerGraph对象,可以使用对象的功能来绘制曲线图,并通过添加,删除,连接,和断开层修改。训练网络中,使用层图形作为输入参数trainNetwork

创建

描述

lgraph= layerGraph创建包含没有层的空层图形。您可以通过添加图层到空图addLayers功能。

lgraph= layerGraph (从网络层和集的阵列创建的层图形图层财产。的层lgraph被连接在相同的顺序如。所有图层都必须有唯一的,非空的名称。

lgraph= layerGraph (dagNet提取的层图形DAGNetwork。例如,可以提取一个预训练的网络的层图以进行转印学习。

lgraph= layerGraph (dlnet提取的层图形dlnetwork。使用此语法使用dlnetworktrainNetwork功能或深层网络设计师

输入参数

全部展开

DAG网络,指定为aDAGNetwork对象。

用于自定义训练循环的网络,指定为dlnetwork对象。

对于dlnetwork输入时,软件从可学习参数中提取数值数据,并将其转换为单精度。

属性

全部展开

网络层,指定为数组中。

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

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

数据类型:表格

网络的输入层名称,指定为字符向量的单元阵列。

数据类型:细胞

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

数据类型:细胞

对象的功能

addLayers 添加层以层图形
removeLayers 从层图中删除层
replaceLayer 替换层图形层
connectLayers 在层图形连接层
disconnectLayers 断开层图中的层
情节 绘制神经网络层图

例子

全部折叠

创建一个空层图形和层的阵列。层添加到所述层图形和绘制曲线图。addLayers连接顺序的各层。

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

创建层的阵列。

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

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

lgraph = layerGraph(层);图图(lgraph)

加载预训练SqueezeNet网络。您可以使用此训练的网络进行分类和预测。

网= squeezenet;

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

lgraph = layerGraph(净值)
lgraph = LayerGraph与属性:层:[68x1 nnet.cnn.layer.Layer]连接:[75x2表] InputNames:{ '数据'} OutputNames:{ 'ClassificationLayer_predictions'}

创建向无环图(DAG)网络的深度学习简单。网络列车的数字图像分类。在这个例子中的简单的网络包括:

  • 与层A主枝依次连接。

  • 一个快捷方式连接含有单个1×1的卷积层。快捷方式连接使得所述参数梯度以从输出层更容易地流动到网络的较早的层。

创建网络作为层阵列的主分支。在添加层总结多个输入元件,明智的。指定的用于添加层以总和输入数量。所有图层的名称必须与所有名称必须是唯一的。

图层= [imageInputLayer([28281]),'名称'“输入”)convolution2dLayer(5,16,“填充”“相同”'名称'“conv_1”)batchNormalizationLayer ('名称'“BN_1”)reluLayer('名称''relu_1')convolution2dLayer(3,32,“填充”“相同”“跨越论”2,'名称'“conv_2”)batchNormalizationLayer ('名称'“BN_2”)reluLayer('名称''relu_2')convolution2dLayer(3,32,“填充”“相同”'名称'“conv_3”)batchNormalizationLayer ('名称'“BN_3”)reluLayer('名称''relu_3')additionLayer (2'名称''加')averagePooling2dLayer(2,“跨越论”2,'名称''avpool')fullyConnectedLayer (10'名称'“俱乐部”)softmaxLayer ('名称''SOFTMAX')classificationLayer ('名称''classOutput'));

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

lgraph = layerGraph(层);图图(lgraph)

创建1×1的卷积层,并将其添加到层图中。指定卷积滤波器的数目和步长,以便激活大小与的激活大小匹配'relu_3'层。此安排使添加层能够添加的输出'skipConv''relu_3'层。要检查该层是图中,绘制图形层。

32岁的skipConv = convolution2dLayer (1“跨越论”2,'名称''skipConv');lgraph = addLayers(lgraph,skipConv);图图(lgraph)

创建一个从快捷连接'relu_1'层到'加'层。因为你指定的两成投入到另外层的编号创建时,该层有两个名为输入“三机”'IN2'。的'relu_3'层已经连接到“三机”输入。连接'relu_1'层到'skipConv'层和'skipConv'层到'IN2'输入'加'层。的输出'relu_3''skipConv'层。要检查各层是否连接正确,绘制层图。

lgraph = connectLayers(lgraph,'relu_1''skipConv');lgraph = connectLayers(lgraph,'skipConv'“添加/ in2”);图绘制(lgraph);

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

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

指定培训选项并培训网络。trainNetwork每次使用验证数据验证网络ValidationFrequency迭代。

选择= trainingOptions (“个”...'MaxEpochs'8,...“洗牌”“every-epoch”...“ValidationData”{XValidation, YValidation},...“ValidationFrequency”30岁的...“详细”假的,...“情节”“训练进度”);网= trainNetwork (XTrain YTrain、lgraph选项);

显示经过训练的网络的属性。网络是一个DAGNetwork对象。

净= DAGNetwork与属性:层:[16×1 nnet.cnn.layer.Layer]连接:[16×2表]

分类验证图像和计算的准确性。该网络是非常准确的。

YPredicted =分类(净,XValidation);准确率=平均值(YPredicted == YValidation)
精度= 0.9968

提示

  • 层图形不能指定长短期存储器(LSTM)网络的体系结构。有关如何创建一个LSTM网络的详细信息,请参阅长短期记忆网络

介绍了在R2017b