主要内容

layerGraph

딥러닝을위한신경망계층의그래프

설명

계층그래프는계층이여러계층의입력값을가질수있고여러계층으로출력값을보낼수있는보다복잡한그래프구조를갖는딥러닝신경망의아키텍처를지정합니다。이러한구조를갖는신경망을dag(유방향비순환그래프)신경망이라부릅니다。layerGraph객체를만든후에는객체함수를사용하여그래프를플로팅하고계층을추가하거나,제거하거나,연결하거나,연결을끊어수정할수있습니다。신경망을훈련시키려면trainNetwork함수의입력값으로계층그래프를사용하거나계층그래프를dlnetwork로변환한다음사용자지정훈련루프를사용하여훈련시키십시오。

생성

설명

예제

lgraph= layerGraph는계층이없는빈계층그래프를만듭니다。addLayers함수를사용하여빈그래프에계층을추가할수있습니다。

예제

lgraph= layerGraph (는신경망계층배열로부터계층그래프를만들고속성을설정합니다。lgraph의계층들은와동일한순서로연결됩니다。

예제

lgraph= layerGraph (SeriesNetwork,DAGNetwork또는dlnetwork객체의계층그래프를추출합니다。,예를들어사전훈련된신경망의계층그래프를추출하여전이학습을수행할수있습니다。

입력marketing수

모두 확장

딥러닝신경망으로,SeriesNetwork,DAGNetwork또는dlnetwork객체로지정됩니다。

속성

모두 확장

이속성은읽기전용입니다。

신경망계층으로,배열로지정됩니다。

이속성은읽기전용입니다。

계층연결로,2개의열이있는테이블로지정됩니다。

각테이블행은계층그래프에있는하나의연결을나타냅니다。첫 번째 열는각연결의소스를지정합니다。두 번째 열目的地은각연결의대상을지정합니다。연결소스와대상은계층이름이거나“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,layers);图绘制(lgraph)

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

계층배열을만듭니다。

图层= [imageInputLayer([28 28 1],“名字”,“输入”) convolution2dLayer(3, 16岁,“填充”,“相同”,“名字”,“conv_1”) batchNormalizationLayer (“名字”,“BN_1”) reluLayer (“名字”,“relu_1”));

계층배열에서계층그래프를만듭니다。layerGraph에있는모든계층을순차적으로연결합니다。계층그래프를플로팅합니다。

lgraph = layerGraph(图层);图绘制(lgraph)

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

사전훈련된SqueezeNet신경망을불러옵니다。이훈련된신경망을사용하여분류와예측을수행할수있습니다。

网=挤压网;

신경망구조를수정하려면먼저layerGraph를사용하여dag신경망의구조를추출합니다그런 다음LayerGraph객체의함수를사용하여신경망아키텍처를수정할수있습니다。

lgraph = layerGraph(net)
lgraph = LayerGraph with properties: Layers: [68x1 nnet.cnn.layer.Layer] Connections: [75x2 table] InputNames: {'data'} OutputNames: {'ClassificationLayer_predictions'}

딥러닝을위한간단한dag(유방향비순환그래프)신경망을만듭니다。숫자상을분류하도록신경망을훈련시킵니다。이예제의간단한신경망은다음으로구성됩니다。

  • 계층이순차적으로연결된기본분기。

  • 1×1컨벌루션계층1개를포함하는지름길연결.지름길연결은출력계층에서신경망의이전계층으로파라미터기울기가보다쉽게흐르도록해줍니다。

신경망의기본분기를계층배열로만듭니다。덧셈계층은여러개의입력값을소별로합산합니다。덧셈계층이합산할입력값의개수를지정합니다。나중에쉽게연결을추가하려면첫번째ReLU계층과덧셈계층에이름을지정하십시오。

图层= [imageInputLayer([28 28 1])卷积2dlayer (5,16,“填充”,“相同”reluLayer()“名字”,“relu_1”32岁的)convolution2dLayer (3“填充”,“相同”,“步”,2)卷积2dlayer (3,32,“填充”,“相同”(2)“名字”,“添加”) averagePooling2dLayer (2“步”,2) fullyConnectedLayer(10) softmaxLayer classificationLayer];

계층배열에서계층그래프를만듭니다。layerGraph에있는모든계층을순차적으로연결합니다。계층그래프를플로팅합니다。

lgraph = layerGraph(图层);图绘制(lgraph)

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

1×1컨벌루션계층을만들어서계층그래프에추가합니다。활성화크기가세번째ReLU계층의활성화크기와일치하도록컨벌루션필터의개수와스트라이드를지정합니다。이렇게지정해두면덧셈계층이세번째ReLU계층과1×1컨벌루션계층의출력값을더할수있게됩니다。계층이그래프에있는지확하기위해계층그래프를플로팅합니다。

skipConv =卷积2dlayer (1,32,“步”,2,“名字”,“skipConv”);lgraph = addLayers(lgraph,skipConv);图绘制(lgraph)

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

“relu_1”계층에서“添加”계층으로지름길연결을만듭니다。덧셈계층을만들때계층의입력값의개수를2로지정했으므로이계층은이름이각각“三机”“in2”fc2개의입력값을갖습니다。세번째ReLU계층은이미“三机”입력값에연결되어있습니다。“relu_1”계층을“skipConv”계층에연결하고“skipConv”계층을“添加”계층의“in2”입력값에연결합니다。이덧셈계층이세번째ReLU계층과“skipConv”계층의출력값을합산합니다。계층이올바르게연결되었는지확하려면계층그래프를플로팅합니다。

lgraph = connectLayers(“relu_1”,“skipConv”);lgraph = connectLayers(“skipConv”,“添加/ in2”);图绘制(lgraph);

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

28×28회색조숫자상으로구성된훈련데이터와검데이터를불러옵니다。

[XTrain,YTrain] = digitTrain4DArrayData;[XValidation,YValidation] = digitTest4DArrayData;

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

选项= trainingOptions(“个”,...“MaxEpochs”,8,...“洗牌”,“every-epoch”,...“ValidationData”{XValidation, YValidation},...“ValidationFrequency”30岁的...“详细”假的,...“阴谋”,“训练进步”);net = trainNetwork(XTrain,YTrain,lgraph,options);

{

훈련된신경망의속성을@ @시합니다。신경망은DAGNetwork객체입니다。

net = DAGNetwork with properties: Layers: [16x1 nnet.cnn.layer.Layer] Connections: [16x2 table] InputNames: {'imageinput'} OutputNames: {'classoutput'}

검상을분류하고정확도를계산합니다。이신경망은정확도가매우높습니다。

ypredict = classification (net,XValidation);accuracy = mean(yexpected == YValidation)
准确度= 0.9934

버전 내역

R2017b에개발됨