主要内容

analyzeNetwork

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

설명

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

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

예제

analyzeNetwork (는계층배열또는계층그래프에서주어진신경망계층을분석하고trainNetwork워크플로의오류와문제도검출합니다。함수는신경망아키텍처에대한대화형방식시각화를표시하고신경망계층에대한상세한정보를제공합니다。계층정보에는계층유형,계층활성화의크기와형식,학습가능한파라미터와상태파라미터의크기와개수가포함됩니다。

각활성화차원에는年代(공간),C(채널),B(배치),T(시간또는시퀀스),U(지정되지않음)중하나의레이블이지정됩니다。

예제

analyzeNetwork (TargetUsage =目标은계층배열또는계층그래프에서주어진신경망계층을지정된대상워크플로에기반하여분석합니다。dlnetwork워크플로에기반하여계층을분석하려면이구문을사용하십시오。

analyzeNetwork (X1,…,XnTargetUsage =“dlnetwork”)는신경망@ @본입력값X1,…,Xn을사용하여계층배열또는계층그래프를분석합니다。소프트웨어는신경망을통해표본입력값을전파하여계층활성화의크기와형식,학습가능한파라미터와상태파라미터의크기와개,수학습가능한파라미터의전체개수를결정합니다。이구문을사용하여입력계층에연결되지않은입력값을하나이상갖는신경망을분석합니다。

예제

analyzeNetwork (SeriesNetworkDAGNetwork또는dlnetwork객체을분석합니다。

예제

analyzeNetwork (X1,…,Xn은신경망@ @본입력값X1,…,Xn을사용하여dlnetwork객체을분석합니다。소프트웨어는신경망을통해표본입력값을전파하여계층활성화의크기와형식,학습가능한파라미터와상태파라미터의크기와개,수학습가능한파라미터의전체개수를결정합니다。이구문을사용하여입력계층에연결되지않은입력값을하나이상가지며초기화되지않은dlnetwork를분석합니다。

예제

모두 축소

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

Net = googlenet;

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

analyzeNetwork(净)

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

표에서계층속성,계층유형,계층활성화크기,학습가능한파라미터와같은계층정보를확인합니다。계층의활성화는해당계층의출력값입니다。각활성화차원에는다음중하나의레이블이지정됩니다。

  • S -공간

  • C -채널

  • B -배치관측값

  • T -시간또는시퀀스

  • U -지정되지않음

데이터가어떤방식으로신경망을통과해전파되는지그리고계층이활성화의크기와레이아웃을어떻게수정하는지파악하려면차원레이블을확인하십시오。

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

딥러닝신경망분석기는신경망에있는학습가능한파라미터의전체개수를소수점첫째자리까지보여줍니다。학습가능한파라미터의정확한개수를확하려면전체학습가능파라미터에서잠시멈추십시오。각계층에서학습가능한파라미터의개수를표시하려면계층표의오른쪽위코너에있는화살표를클릭하고학습가능개수를선택하십시오。열값을기준으로계층표를정렬하려면열제목위에커서를올렸을때표시되는화살표를클릭합니다。예를들어,계층을학습가능한파라미터개수를기준으로정렬하여가장많은파라미터를포함하는계층이무엇인지확인할수있습니다。

몇곳에건너뛰기연결(跳过连接)이있는간단한컨벌루션신경망을만듭니다。신경망의기본분기를포함하는계층배열을만듭니다。

图层= [imageInputLayer([32 32 3])卷积2dlayer(5,16,填充=“相同”) reluLayer (Name =“relu_1”) convolution2dLayer(3、16、填充=“相同”,Stride=2) reluLayer additionLayer(2,Name=“add_1”) convolution2dLayer(3、16、填充=“相同”,Stride=2) reluLayer additionLayer(3,Name=“add_2”) fullyConnectedLayer(10) softmaxLayer classificationLayer];lgraph = layerGraph(图层);

계층배열을계층그래프로변환하고건너뛰기연결을추가합니다。건너뛰기연결중하나는단일1×1컨벌루션계층conv_skip을갖습니다。

layer = convolution2dLayer(1,16,Stride=2,Name=“conv_skip”);lgraph = addLayers(lgraph,layer);lgraph = connectLayers(“relu_1”“add_1 / in2”);lgraph = connectLayers(“add_1”“add_2 / in2”);

analyzeNetwork함수를사용하여신경망아키텍처를분석합니다。이함수는신경망의세개계층에서문제를발견합니다。

analyzeNetwork (lgraph)

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

  • 계층conv_skip이신경망의나머지에연결되어있지않습니다。이 계층은add_1계층과add_2계층간의지름길연결의일부가되어야합니다。이오류를수정하려면add_1conv_skip에연결하고conv_skipadd_2에연결합니다。

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

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

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

图层= [imageInputLayer([32 32 3])卷积2dlayer(5,16,填充=“相同”) reluLayer (Name =“relu_1”) convolution2dLayer(3、16、填充=“相同”) reluLayer additionLayer(2,Name=“add_1”) convolution2dLayer(3、16、填充=“相同”,Stride=2) reluLayer additionLayer(2,Name=“add_2”) fullyConnectedLayer(10) softmaxLayer classificationLayer];lgraph = layerGraph(图层);layer = convolution2dLayer(1,16,Stride=2,Name=“conv_skip”);lgraph = addLayers(lgraph,layer);lgraph = connectLayers(“relu_1”“add_1 / in2”);lgraph = connectLayers(“add_1”“conv_skip”);lgraph = connectLayers(“conv_skip”“add_2 / in2”);

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

analyzeNetwork (lgraph)

사용자지정훈련루프의계층배열을만듭니다。사용자지정훈련루프워크플로의경우,신경망이출력계층을가지면됩니다。

layers = [imageInputLayer([28 28 1],归一化=“没有”) convolution2dLayer(5、20、填充=“相同”) batchNormalizationLayer relullayer卷积2dlayer(3,20,填充=“相同”) batchNormalizationLayer relullayer卷积2dlayer(3,20,填充=“相同”) batchNormalizationLayer reluLayer fullyConnectedLayer(10) softmaxLayer];

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

analyzeNetwork(层,TargetUsage =“dlnetwork”

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

입력계층에연결되지않은입력값을갖는신경망을분석하려면analyzeNetwork함수에신경망@ @본입력값을제공하면됩니다。TargetUsage옵션을“dlnetwork”로설정하여사용자지정훈련워크플로를위해dlnetwork객체를분석하거나배열 또는LayerGraph객체를분석할때@ @본입력값을제공할수있습니다。

신경망아키텍처를정의합니다。두개의분기가있는신경망을만듭니다。신경망은분기당하나의입력값,즉두개의입력값을받습니다。덧셈계층을사용하여분기를연결합니다。

numFilters = 24;inputSize = [64 64 3];layersBranch1 = [convolution2dLayer(3,6*numFilters,Padding= .“相同”步= 2)groupNormalizationLayer (“所有渠道”) reluLayer卷积2dlayer (3,numFilters,填充=“相同”) groupNormalizationLayer (“channel-wise”) additionLayer (Name =“添加”reluLayer fullyConnectedLayer(10) softmaxLayer];layersBranch2 = [convolution2dLayer(1,numFilters,Name= .“conv_branch”) groupNormalizationLayer (“所有渠道”、名称=“gn_branch”));lgraph = layerGraph(layersBranch1);lgraph = addLayers(lgraph,layersBranch2);lgraph = connectLayers(“gn_branch”“添加/ in2”);

dlnetwork를만듭니다。이신경망에는연결되지않은입력값이포함되므로初始化옵션을로설정하여초기화되지않은dlnetwork객체를만듭니다。

net = dlnetwork(lgraph,Initialize=false);

신경망입력값이름을확합니다。

网InputNames
ans =1×2细胞{' conv_1} {' conv_branch '}

임의의dlarray객체를사용하여이신경망의일반적인입력값과동일한크기와형식의신경망표본입력값을만듭니다。두입력값모두배치크기로32를사용합니다。계층“输入”에대한입력값으로세개의채널을가진64×64크기의입력값을사용합니다。계층”conv_branch”에대한입력값으로18개의채널을가진64×64크기의입력값을사용합니다。

X1 = dlarray(rand([inputSize 32]),“SSCB”);X2 = dlarray(rand([32 32 18 32]),“SSCB”);

신경망을분석합니다。dlnetworkInputNames속성순서와동일한순서로@ @본입력값을제공합니다。입력계층에연결된입력값을비롯하여모든신경망입력값에표본입력값을제공해야합니다。

analyzeNetwork(净(X1, X2)

입력marketing수

모두 축소

신경망계층으로,배열 또는LayerGraph객체로지정됩니다。

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

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

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

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

  • “dlnetwork”- - - - - -dlnetwork객체를사용한경우의계층그래프를분석합니다。예를들어,함수는계층그래프에출력계층이없음을확marketing합니다。

신경망` ` ` ` `본입력값으로,형식이지정된dlarray객체로지정됩니다。소프트웨어는신경망을통해표본입력값을전파하여계층활성화의크기와형식,학습가능한파라미터와상태파라미터의크기와개,수학습가능한파라미터의전체개수를결정합니다。

입력계층이없거나입력계층에연결되지않은입력값을갖는신경망을분석하려고할때표본입력값을사용합니다。

본입력값을지정할때지켜야하는순서는분석하고있는신경망유형에따라다릅니다。

  • 배열-배열에,。

  • LayerGraph- - - - - -LayerGraph속성에,。

  • dlnetwork- - - - - -dlnetworkInputNames속성에나열된입력값순서대로@ @본입력값을제공합니다。

계층에연결되지않은입력값이여러개있으면그계층의@ @본입력값은계층의InputNames속성에@ @시된순서와동일한순서로지정하되별도로지정해야합니다。

입력계층에해당표본입력값이연결되어있더라도신경망의각입력값마다하나의표본입력값을지정해야합니다。

버전 내역

R2018a에개발됨

Baidu
map