analyzeNetwork

分析深度学习网络架构

描述

analyzeNetwork(分析由指定的深度学习网络架构。该analyzeNetwork功能显示网络架构的交互式可视化,检测到网络中的错误和问题,并提供了关于网络层的详细信息。层信息包括层激活和可学习参数的大小,可学习参数的总数,和复发性层的状态参数的大小。

使用网络分析仪来观察和了解网络架构,检查是否已正确定义的架构,并在训练前发现问题。问题:analyzeNetwork检测包括丢失或不连接的层,不正确大小的层的输入,的层输入一个不正确的数,和无效图结构。

例子

全部收缩

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

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

分析网络。analyzeNetwork显示网络架构的交互式情节和关于所述网络层的含表信息。

调查使用阴谋左侧的网络架构。选择在情节的一层。所选择的层中的情节,并在层表中高亮显示。

在表中,查看层信息,诸如层性能,层类型和层激活和可学习参数的大小。层的激活是该层的输出。

在网络中选择一个更深的层。请注意,在更深的层的激活是在通道尺寸(最后一维)在空间维度(前两个维度)更小和更大。采用这种结构使得能够卷积神经网络,逐渐增加,同时减小的空间分辨率提取的图像的数量的特征。

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

analyzeNetwork(净)

创建快捷方式连接的简单卷积网络。创建网络作为层的阵列的主支路和创建从层阵列的层图。layerGraph连接在所有层顺序。

层= [imageInputLayer([32 32 3],'名称'“输入”)convolution2dLayer(5,16,'填充''相同''名称''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 /英寸2');

分析网络架构。analyzeNetwork发现网络中的四大误区。

analyzeNetwork(lgraph)

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

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

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

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

  • 全部投入到一个另外层必须具有相同的大小,但ADD1层具有不同大小的两个输入。由于conv_2层具有“跨越论”的2值,该层由下采样的两个因素是前两个维度的激活(空间尺寸)。要调整从输入relu2层,使得它的尺寸与从输入相同relu1,通过设置除去下采样“跨越论”conv_2层1。

应用这些修改从这个例子开始的层结构图,并创建一个新的层图。

层= [imageInputLayer([32 32 3],'名称'“输入”)convolution2dLayer(5,16,'填充''相同''名称''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 /英寸2');

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

analyzeNetwork(lgraph)

输入参数

全部收缩

网络体系结构,指定为阵列,LayerGraph宾语,SeriesNetwork对象,或DAGNetwork宾语。

介绍了在R2018a