主要内容

additionLayer

加法层

描述

添加层从多个神经网络层元素中添加输入。

创建它时,请指定图层的输入数。图层的输入具有名称'In1','In2',......,'Inn',在那里N为输入的个数。当通过使用连接或断开层时使用输入名称connectLayersdisconnectLayers.所有输入到加法层必须具有相同的维度。

创建

描述

例子

= additionLayer (numInputs创建一个添加层,添加numInputs输入element-wise。该函数还设置NumInputs财产。

例子

= additionLayer (numInputs,'名称',名称还设置了名称财产。要创建包含附加层的网络,必须指定层名。

特性

全部展开

层的输入数,指定为正整数。

输入有名称'In1','In2',......,'Inn',在那里N=NumInputs.例如,如果NumInputs等于3,那么输入就有名称“三机”、“in2”,'In3'.当通过使用连接或断开层时使用输入名称connectLayersdisconnectLayers

图层名称,指定为字符向量或字符串标量。要在图层图中包含此图层,必须指定图层名称。

数据类型:字符|细绳

输入名称,指定为{“三机”,“in2”,…,“客栈”},在那里N是图层的输入数。

数据类型:细胞

层输出的数量。这一层只有一个输出。

数据类型:

输出层的名称。这一层只有一个输出。

数据类型:细胞

例子

全部折叠

使用两个输入和名称创建一个添加层“add_1”

添加=添加层(2,'名称'“add_1”
添加=附加层具有属性:名称:'add_1'numinputs:2输入名称:{'In1'In2'}

创建两个ReLU层,并将它们连接到添加层。加法层将ReLU层的输出相加。

Relu_1 = uruulayer('名称''relu_1');relu_2 = reluLayer ('名称''relu_2');Lgraph = layerGraph;Lgraph = Addlayers(LGraph,Relu_1);Lgraph = AddLayers(LGraph,Relu_2);Lgraph = Addlayers(LGraph,Add);Lgraph = ConnectLayers(LAPHAGE,'relu_1''Add_1 / In1');Lgraph = ConnectLayers(LAPHAGE,'relu_2''Add_1 / In2');图(LGROPL)

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

为深度学习创建一个简单的有向非循环图(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 ('名称''ClassOutpul'));

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

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

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

Skipconv = Convolution2Dlayer(1,32,'走吧'2,'名称''skipconv');Lgraph = Addlayers(LAPHAGH,SKIPCONV);图绘图(LGROP)

从中创建快捷方式连接'relu_1'层到了'添加'层。因为您指定了两个作为添加层的输入的数量时,所以该图层有两个名为的输入'in1''in2'.的'relu_3'层已经连接到'in1'输入。连接'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] = dimittest4darraydata;

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

选择= trainingOptions (“个”......'maxepochs',8,......'洗牌'“every-epoch”......“ValidationData”{XValidation, YValidation},......“ValidationFrequency”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

扩展能力

C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。

GPU代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。

在R2017B中介绍