layerGraph

深学习网络层的图

描述

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

创建

描述

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

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

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

lgraph= layerGraph(dlnet提取的层图形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网络。您可以使用此训练的网络进行分类和预测。

净= squeezenet;

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

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

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

  • 与层A主枝依次连接。

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

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

层= [imageInputLayer([28 28 1],'名称'“输入”)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,'名称''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'层到'加'层。因为你指定的两成投入到另外层的编号创建时,该层有两个名为输入'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目的。

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

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

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

提示

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

介绍了在R2017b