主要内容

additionLayer

添加层

描述

加法层以元素的方式增加来自多个神经网络层的输入。

在创建图层时指定输入的数量。层的输入有名字“三机”、“in2’,……,“酒店”,在那里N为输入的个数。当通过使用连接或断开层时使用输入名称connectLayersdisconnectLayers.添加层的所有输入必须具有相同的维度。

创建

描述

例子

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

例子

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

属性

全部展开

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

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

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

数据类型:字符|字符串

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

数据类型:细胞

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

数据类型:

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

数据类型:细胞

例子

全部折叠

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

添加= additionLayer (2“名字”“add_1”
add = AdditionLayer with properties: Name: 'add_1' NumInputs: 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)

图中包含一个坐标轴。坐标轴包含一个graphplot类型的对象。

为深度学习创建一个简单的有向无环图(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“名字”“俱乐部”) 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”“添加/ 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对象。

net = DAGNetwork with properties: Layers: [16×1 net.cnn.layer. layer] Connections: [16×2 table] InputNames: {'input'} OutputNames: {'classOutput'}

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

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

扩展功能

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

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

介绍了R2017b