layerGraph

深学习网络层的图

描述

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

创建

描述

例子

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

例子

lgraph= layerGraph()从网络层数组中创建层图并设置属性。在该层lgraph是否按与in相同的顺序连接.所有层必须有唯一的、非空的名称。

例子

lgraph= layerGraph(dagNet)提取a的层图DAGNetwork.例如,您可以提取预训练网络的层图来执行转移学习。

lgraph= layerGraph(dlnet)提取a的层图dlnetwork.使用此语法来使用dlnetworktrainNetwork函数或深层网络设计师.

输入参数

展开全部

DAG网络,指定为DAGNetwork宾语。

网络的定制培训的循环,指定为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([28 28 1],“名字”,“输入”)convolution2dLayer(3,16,'填充','相同',“名字”,'conv_1')batchNormalizationLayer(“名字”,'BN_1')reluLayer (“名字”,“relu_1”)];

创建从层阵列的层图。layerGraph连接在所有层按顺序。绘制层图。

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

加载一个预先训练的网络。你可以使用这个训练过的网络进行分类和预测。

净= squeezenet;

修改网络结构,首先通过使用提取DAG网络的结构layerGraph.然后,您可以使用的目标函数LayerGraph修改网络架构。

lgraph = layerGraph(净)
lgraph = LayerGraph with properties: Layers: [68x1 nnet.cn .layer. layer] Connections: [75x2 table] InputNames: {'data'} OutputNames: {' classificationlayer_'}

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

  • 一种主分支,各层按顺序连接。

  • 一个快捷方式连接包含一个1×1的卷积层。快捷连接使参数梯度更容易地从输出层流向网络的较早的层。

将网络的主分支创建为一个层数组。加法层对多个输入元素求和。指定要求和的添加层的输入数。所有层必须有名称,并且所有名称必须是唯一的。

层= [imageInputLayer([28 28 1],“名字”,“输入”16)convolution2dLayer(5日,'填充','相同',“名字”,'conv_1')batchNormalizationLayer(“名字”,'BN_1')reluLayer (“名字”,“relu_1”32岁的)convolution2dLayer (3'填充','相同',“步”,2,“名字”,'conv_2')batchNormalizationLayer(“名字”,'BN_2')reluLayer (“名字”,“relu_2”32岁的)convolution2dLayer (3'填充','相同',“名字”,'conv_3')batchNormalizationLayer(“名字”,'BN_3')reluLayer (“名字”,“relu_3”)additionLayer(2,“名字”,“添加”)averagePooling2dLayer (2“步”,2,“名字”,“avpool”)fullyConnectedLayer(10,“名字”,'FC')softmaxLayer(“名字”,“softmax”)classificationLayer(“名字”,“classOutput”)];

创建从层阵列的层图。layerGraph连接在所有层按顺序。绘制层图。

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

创建1×1的卷积层并将其添加到该层图形。指定卷积滤波器的数量和步伐,使活化大小的激活尺寸相匹配“relu_3”层。这种布置使得除层以添加的输出“skipConv”“relu_3”层。要检查层是否在图中,绘制层图。

skipConv = convolution2dLayer(1,32,“步”,2,“名字”,“skipConv”);lgraph = addLayers (lgraph skipConv);图绘制(lgraph)

从。创建快捷连接“relu_1”层的“添加”层。因为您在创建添加层时指定了2作为它的输入数,所以该层有两个命名的输入'IN1'“in2”.该“relu_3”层已经连接到'IN1'输入。连接“relu_1”层的“skipConv”层和所述“skipConv”层的“in2”输入的“添加”层。在添加层现在总结的输出“relu_3”“skipConv”层。要检查层连接正确,绘制层图形。

lgraph = connectLayers (lgraph,“relu_1”,“skipConv”);lgraph = connectLayers (lgraph,“skipConv”,“添加/平方英寸”);图图(lgraph);

加载训练和验证数据,它由数字28由-28灰度图像。

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

指定的培训方式和培训网络。trainNetwork验证使用所述验证数据的每个网络ValidationFrequency迭代。

选项= trainingOptions('SGDM',...“MaxEpochs”8...“洗牌”,“每个历元”,...'ValidationData'{XValidation,YValidation}...'ValidationFrequency'30,...“放牧”,假,...“阴谋”,“训练进步”);净= trainNetwork(XTrain,YTrain,lgraph,选项);

显示训练有素的网络的性能。该网络是一个DAGNetwork宾语。

net = DAGNetwork with properties: Layers:[16×1 nnet.cn .layer. layer. layer]连接:[16×2 table]

对验证图像进行分类,计算精度。这个网络非常精确。

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

提示

  • 层图不能指定长短时记忆(LSTM)网络的体系结构。有关如何创建LSTM网络的更多信息,请参见长短时记忆网络.

介绍了R2017b