connectLayers

在层图中连接层

描述

例子

newlgraph= connectLayers (lgraph,年代,d)连接源层年代到目的地层d在图层图中lgraph。新的图层图,newlgraph,包含与。相同的层lgraph包括新的连接。

例子

全部收缩

创建一个包含两个输入和名称的附加层“add_1”

添加= additionLayer (2“名字”,“add_1”)
add = AdditionLayer with properties: Name: 'add_1' numinput: 2 InputNames: {'in1' 'in2'}

创建两个RELU层,并将其连接到另外层。在添加层总结从RELU层输出。

relu_1 = reluLayer (“名字”,“relu_1”);relu_2 = reluLayer(“名字”,“relu_2”);lgraph = layerGraph;lgraph = addLayers (lgraph relu_1);lgraph = addLayers (lgraph relu_2);lgraph = addLayers (lgraph,添加);lgraph = connectLayers (lgraph,“relu_1”,“add_1 /三机一体”);lgraph = connectLayers (lgraph,“relu_2”,“add_1 / in2”);情节(lgraph)

为深度学习创建一个简单的有向无环图(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”层。要检查层是否在图中,绘制层图。

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

创建快捷连接“relu_1”层的“添加”层。因为您在创建添加层时指定了2作为它的输入数,所以该层有两个命名的输入“三机”“in2”。该“relu_3”层已经连接到“三机”输入。连接“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

输入参数

全部收缩

层图形,指定为LayerGraph对象。要创建层图,请使用layerGraph

连接源,指定为字符向量或字符串标量。

  • 如果源层只有一个输出,那么年代是层的名称。

  • 如果源层有多个输出,则年代是层名称后面跟着字符/和层输出的名称:'layerName / outputName'

例:'CONV1'

例:“mpool /指数”

连接目的地,指定为字符向量或字符串标量。

  • 如果目标层只有一个输入,则d是层的名称。

  • 如果目标层有多个输入,则d是层名称后面跟着字符/和层输入的名称:“layerName / inputName”

例:'FC'

例:“addlayer1 / in2”

输出参数

全部收缩

输出层图形,返回为LayerGraph对象。

介绍了R2017b