主要内容

이페이지의최신내용은아직번역되지않았습니다。최신내용은영문으로볼수있습니다。

analyzeNetwork

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

설명

예제

analyzeNetwork ()로지정된딥러닝신경망아키텍처를분석합니다。analyzeNetwork함수는신경망아키텍처를대화형방식으로표시하고,신경망의오류와문제를검출하고,신경망계층에대한상세한정보를제공합니다。계층정보에는계층활성화의크기와학습가능한파라미터,학습가능한파라미터의총개수,순환계층의상태파라미터의크기가포함됩니다。

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

예제

모두축소

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

网= googlenet
[144×1 nnet.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 x1컨벌루션계층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)

입력인수

모두축소

신경망아키텍처로,배열,LayerGraph객체,SeriesNetwork객체또는DAGNetwork객체로지정됩니다。

R2018a에개발됨