analyzeNetwork

分析深度学习网络架构

描述

例子

analyzeNetwork()分析由指定的深度学习网络架构。的analyzeNetwork函数显示网络体系结构的交互式可视化,检测网络中的错误和问题,并提供有关网络层的详细信息。层信息包括层激活和可学习参数的大小、可学习参数的总数和循环层的状态参数的大小。

使用网络分析器来可视化和理解网络体系结构,检查您是否正确定义了体系结构,并在培训之前检测问题。的问题,analyzeNetwork检测包括丢失或未连接的层、不正确的层输入大小、不正确的层输入数量以及无效的图形结构。

例子

全部折叠

加载预训练GoogLeNet卷积神经网络。

净= googlenet
净= DAGNetwork与属性:层:[144×1 nnet.cnn.layer.Layer]连接:[170×2表]

分析网络。analyzeNetwork显示网络体系结构的交互式图表和包含有关网络层的信息的表。

使用左边的图研究网络架构。在图中选择一个图层。选中的层在图和层表中突出显示。

在表中,查看层信息,如层属性、层类型和层激活的大小以及可学习的参数。一个层的激活是该层的输出。

在网络中选择一个更深的层。请注意,更深层次中的激活在空间维度(前两个维度)中更小,而在通道维度(最后一个维度)中更大。利用这种结构,卷积神经网络可以在降低空间分辨率的同时,逐渐增加提取图像特征的数量。

通过点击在层表的右上角的箭头示出了各个层可学习参数的总数,并选择总Learnables。要排序的列值的层表,将鼠标悬停在列标题,然后单击箭头出现。例如,可以确定哪个层由可学习参数的总数排序所述层包含最参数。

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,“名字”,'FC')classificationLayer(“名字”,“输出”));lgraph = layerGraph(层);

创建快捷连接。其中一个快捷连接包含一个1×1的卷积层skipConv

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

分析网络架构。analyzeNetwork发现网络中的四个错误。

analyzeNetwork (lgraph)

调查并修复网络中的错误。在本例中,以下问题导致错误:

  • 甲SOFTMAX层,其输出类概率,必须先于分类层。要解决在错误输出分类层,在分类层之前添加一个softmax层。

  • skipConv层不连接到网络的其余部分。它应该是之间的快捷连接的一部分ADD1ADD2层。要修正这个错误,连接ADD1skipConvskipConvADD2

  • ADD2指定层具有三个输入端,但是仅层具有两个输入。修复错误,指定为输入的数量2

  • 全部投入到一个另外层必须具有相同的大小,但ADD1层有两个不同大小的输入。因为conv_2层具有“步”的2值,该层由下采样的两个因素是前两个维度的激活(空间尺寸)。要调整从输入relu2层,使其具有与输入相同的大小relu1,通过设置除去下采样“步”的价值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,“名字”,'FC')softmaxLayer (“名字”,“softmax”);classificationLayer(“名字”,“输出”));lgraph = layerGraph(层);skipConv = convolution2dLayer(1, 16岁,“步”,2,“名字”,“skipConv”);lgraph = addLayers (lgraph skipConv);lgraph = connectLayers (lgraph,“relu_1”,'ADD1 /英寸2');lgraph = connectLayers (lgraph,“add1”,“skipConv”);lgraph = connectLayers (lgraph,“skipConv”,“add2 / in2”);

分析新的架构。新网络不包含任何错误,并准备接受培训。

analyzeNetwork (lgraph)

输入参数

全部折叠

网络架构,指定为a数组,LayerGraph宾语,SeriesNetwork对象,或DAGNetwork宾语。

介绍了R2018a