主要内容

이번역페이지는최신내용을담고있지않습니다。최신내용을영문으로보려면여기를클릭하십시오。

additionLayer

설명

덧셈계층은여러신경망계층으로부터의입력값을요소별로더합니다。

계층을만들때계층의입력값의개수를지정합니다。계층의입력값은“三机”、“in2’,……,“酒店”과같은이름을갖습니다。여기서N은입력값의개수입니다。입력값이름은connectLayers또는disconnectLayers를사용하여계층을연결하거나연결을끊을때사용합니다。덧셈계층의입력값은모두동일한차원을가져야합니다。

생성

설명

예제

= additionLayer (numInputsnumInputs개의입력값을요소별로더하는덧셈계층을만듭니다。이함수는NumInputs속성도설정합니다。

예제

= additionLayer (numInputs“名称”,的名字的名字속성도설정합니다。덧셈계층을포함하는신경망을만들려면계층이름을지정해야합니다。

속성

모두확장

계층에대한입력값의개수로,양의정수로지정됩니다。

입력값은“三机”、“in2’,……,“酒店”과같은이름을갖습니다。여기서NNumInputs와같습니다。예를들어NumInputs3인가경우,입력값은“三机”、“in2”“in3”이라는이름을갖습니다。입력값이름은connectLayers또는disconnectLayers를사용하여계층을연결하거나연결을끊을때사용합니다。

계층이름으로,문자형벡터또는字符串형스칼라로지정됩니다。계층그래프에이계층을포함하려면계층이름을지정해야합니다。

데이터형:字符|字符串

입력값이름으로,{“三机”,“in2”,…,“客栈”}으로지정됩니다。여기서N은계층의입력값개수입니다。

데이터형:细胞

계층의출력값개수。이계층은단일출력값만가집니다。

데이터형:

계층의출력값이름。이계층은단일출력값만가집니다。

데이터형:细胞

예제

모두축소

입력값이2개이고이름이“add_1”인덧셈계층을만듭니다。

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

2개의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컨벌루션계층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”2개인의입력값을갖습니다。“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;

훈련옵션을지정하고신경망을훈련시킵니다。trainNetworkValidationFrequency회반복마다검증데이터를사용하여신경망을검증합니다。

选择= 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®编码器™를사용하여C코드나c++코드를생성할수있습니다。

GPU코드생성
GPU编码器™를사용하여NVIDIA GPU®용CUDA®코드를생성할수있습니다。

R2017b에개발됨