主要内容

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

analyzeNetwork

딥러닝신경망아키텍처분석

설명

analyzeNetwork를사용해서신경망을시각화하여이해하고,아키텍처를올바르게정의했는지확인하고,훈련전에문제를파악합니다。analyzeNetwork에서검출하는문제에는계층이누락되었거나연결이끊긴경우,계층입력크기가올바르지않은경우,계층입력개수가올바르지않은경우,그래프구조가유효하지않은경우등이포함됩니다。

예제

analyzeNetwork (SeriesNetwork또는DAGNetwork객체을분석합니다。함수는신경망아키텍처에대한대화형방식시각화를표시하고신경망계층에대한상세한정보를제공합니다。계층정보에는계층활성화의크기와학습가능한파라미터,학습가능한파라미터의총개수,순환계층의상태파라미터의크기가포함됩니다。

대화형방식으로신경망을시각화,분석및훈련시키려면deepNetworkDesigner(净)을사용하십시오。자세한내용은심층신경망디자이너를참조하십시오。

analyzeNetwork (는계층배열를분석하고trainNetwork워크플로를위해오류와문제를검출합니다。

예제

analyzeNetwork (lgraph는계층그래프lgraph를분석하고trainNetwork워크플로를위해오류와문제를검출합니다。

analyzeNetwork (dlnet은사용자지정훈련루프워크플로를위해dlnetwork객체를분석합니다。연결되지않은입력값이있는신경망은지원되지않습니다。

예제

analyzeNetwork (lgraph“TargetUsage”,目标은지정된대상워크플로를위해계층그래프lgraph를분석합니다。dlnetwork워크플로의계층그래프를분석할때이구문을사용하십시오。

예제

모두축소

사전훈련된GoogLeNet컨벌루션신경망을불러옵니다。

网= googlenet
net = DAGNetwork with properties: Layers: [144×1 net.cnn.layer. layer]连接:[170×2 table]

신경망을분석합니다。analyzeNetwork는신경망아키텍처에대한대화형방식플롯그리고신경망계층에대한정보를포함하는표를표시합니다。

왼쪽에있는플롯을사용하여신경망아키텍처를살펴봅니다。플롯에서계층을하나선택합니다。선택한계층은플롯과계층표에서강조표시됩니다。

표에서계층속성,계층유형,계층활성화크기,학습가능한파라미터와같은계층정보를확인합니다。계층의활성화는해당계층의출력값입니다。

신경망에서더깊은계층을하나선택합니다。더깊은계층에서의활성화는공간차원(처음2개차원)은더작고채널차원(마지막차원)은더큰것을알수있습니다。이구조를사용하면컨벌루션신경망이공간분해능을줄이면서추출된영상특징개수를서서히늘릴수있습니다。

각계층에서학습가능한파라미터의총개수를표시하려면계층표의오른쪽위코너에있는화살표를클릭하고전체학습가능파라미터를선택합니다。열값을기준으로계층표를정렬하려면열제목위에커서를올렸을때표시되는화살표를클릭합니다。예를들어,계층을학습가능한파라미터의총개수를기준으로정렬하여가장많은파라미터를포함하는계층이무엇인지확인할수있습니다。

analyzeNetwork(净)

지름길연결을갖는간단한컨벌루션신경망을만듭니다。신경망의기본분기를계층배열로만들고계층배열에서계층그래프를만듭니다。layerGraph의모든계층을순차적으로연결합니다。

[imageInputLayer([32 32 3],]),“名字”“输入”16) convolution2dLayer(5日,“填充”“相同”“名字”“conv_1”) reluLayer (“名字”“relu_1”) convolution2dLayer(3, 16岁,“填充”“相同”“步”2,“名字”“conv_2”) reluLayer (“名字”“relu_2”) additionLayer (2“名字”“add1”) convolution2dLayer(3, 16岁,“填充”“相同”“步”2,“名字”“conv_3”) reluLayer (“名字”“relu_3”) additionLayer (3“名字”“add2”) fullyConnectedLayer (10“名字”“俱乐部”) classificationLayer (“名字”“输出”));lgraph = layerGraph(层);

지름길연결을만듭니다。지름길연결중하나는단일1×1컨벌루션계층skipConv를갖습니다。

skipConv = convolution2dLayer(1, 16岁,“步”2,“名字”“skipConv”);lgraph = addLayers (lgraph skipConv);lgraph = connectLayers (lgraph,“relu_1”“add1 / in2”);lgraph = connectLayers (lgraph,“add1”“add2 / in2”);

신경망아키텍처를분석합니다。analyzeNetwork4개가신경망에서의오류를찾았습니다。

analyzeNetwork (lgraph)

신경망의오류를살펴보고수정합니다。이예제에서는다음과같은문제가오류를유발했습니다。

  • 클래스확률을출력하는소프트맥스계층은분류계층앞에와야합니다。输出분류계층의오류를수정하려면분류계층앞에소프트맥스계층을추가합니다。

  • skipConv계층이신경망의나머지에연결되어있지않습니다。add1계층과add2계층간의지름길연결의일부가되어야합니다。이오류를수정하려면add1skipConv에연결하고skipConvadd2에연결합니다。

  • add2계층은3개의입력값을갖도록지정되어있지만,이계층은2개의입력값을갖습니다。이오류를수정하려면입력값의개수를2로지정합니다。

  • 덧셈계층의입력값은모두크기가같아야하는데add1계층의입력값2개는크기가서로다릅니다。conv_2계층의“步”값이2이므로,이계층은처음2개의차원(공간차원)에서2배만큼활성화를다운샘플링합니다。relu1에서받는입력값과크기가같아지도록relu2계층에서받는입력값의크기를조정하려면conv_2계층의“步”값을1로설정하여다운샘플링을제거합니다。

이예제의첫부분에서생성한계층그래프에이러한수정사항을적용하고새로운계층그래프를만듭니다。

[imageInputLayer([32 32 3],]),“名字”“输入”16) convolution2dLayer(5日,“填充”“相同”“名字”“conv_1”) reluLayer (“名字”“relu_1”) convolution2dLayer(3, 16岁,“填充”“相同”“步”,1,“名字”“conv_2”) reluLayer (“名字”“relu_2”) additionLayer (2“名字”“add1”) convolution2dLayer(3, 16岁,“填充”“相同”“步”2,“名字”“conv_3”) reluLayer (“名字”“relu_3”) additionLayer (2“名字”“add2”) fullyConnectedLayer (10“名字”“俱乐部”) softmaxLayer (“名字”“softmax”);classificationLayer (“名字”“输出”));lgraph = layerGraph(层);skipConv = convolution2dLayer(1, 16岁,“步”2,“名字”“skipConv”);lgraph = addLayers (lgraph skipConv);lgraph = connectLayers (lgraph,“relu_1”“add1 / in2”);lgraph = connectLayers (lgraph,“add1”“skipConv”);lgraph = connectLayers (lgraph,“skipConv”“add2 / in2”);

새아키텍처를분석합니다。새신경망에오류가없습니다。이제신경망을훈련시킬준비가되었습니다。

analyzeNetwork (lgraph)

사용자지정훈련루프의계층그래프를만듭니다。사용자지정훈련루프워크플로의경우,계층그래프가출력계층을가지면안됩니다。

[imageInputLayer([28 28 1],]),“归一化”“没有”“名字”“输入”20岁的)convolution2dLayer (5“名字”“conv1”) batchNormalizationLayer (“名字”“bn1”) reluLayer (“名字”“relu1”20岁的)convolution2dLayer (3“填充”,1,“名字”“conv2”) batchNormalizationLayer (“名字”“bn2”) reluLayer (“名字”“relu2”20岁的)convolution2dLayer (3“填充”,1“名字”“conv3”) batchNormalizationLayer (“名字”“bn3”) reluLayer (“名字”“relu3”) fullyConnectedLayer (10“名字”“俱乐部”) softmaxLayer (“名字”“softmax”));lgraph = layerGraph(层);

analyzeNetwork함수를사용하여계층그래프를분석하고“TargetUsage”옵션을“dlnetwork”로설정합니다。

analyzeNetwork (lgraph“TargetUsage”“dlnetwork”

이경우함수는계층그래프에서문제를보고하지않습니다。

입력인수

모두축소

훈련된신경망으로,SeriesNetwork또는DAGNetwork객체로지정됩니다。사전훈련된신경망을가져오거나(예:googlenet함수사용)trainNetwork를사용하여자신만의고유한신경망을훈련시켜훈련된신경망을얻을수있습니다。

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

내장계층목록은딥러닝계층목록항목을참조하십시오。

계층그래프로,LayerGraph객체로지정됩니다。계층그래프를만들려면layerGraph를사용하십시오。

사용자지정훈련루프에대한신경망으로,dlnetwork객체로지정됩니다。

대상워크플로로,다음중하나로지정됩니다。

  • “trainNetwork”- - - - - -trainNetwork함수와사용할수있도록계층그래프를분석합니다。예를들어,함수는계층그래프에하나의출력계층이있고연결되지않은계층출력값은없음을확인합니다。

  • “dlnetwork”- - - - - -dlnetwork객체와사용할수있도록계층그래프를분석합니다。예를들어,함수는계층그래프에출력계층이없음을확인합니다。

R2018a에개발됨