analyzeNetwork

分析深度学习网络架构

描述

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

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

例子

全部折叠

加载一个预先训练好的GoogLeNet卷积神经网络。

网= googlenet
属性:Layers:[144×1 nnet.cn . Layers .layer]连接:[170×2表]

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

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

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

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

通过单击图层表右上角的箭头显示每个图层中可学习参数的总数并进行选择总可学的。若要按列值对层表进行排序,请将鼠标悬停在列标题上并单击出现的箭头。例如,您可以根据可学习参数的总数对各层进行排序,从而确定哪一层包含的参数最多。

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'名称'“俱乐部”) 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 /英寸2');

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

analyzeNetwork(lgraph)

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

  • 输出类概率的softmax层必须在分类层之前。方法中的错误产量分类层,分类层之前添加SOFTMAX层。

  • skipConv层没有连接到网络的其余部分。它应该是之间的快捷连接的一部分add1add2层。要修复此错误,请连接add1skipConvskipConvadd2

  • add2层指定有三个输入,但是层只有两个输入。若要修正此错误,请指定输入的数目为2

  • 添加层的所有输入必须具有相同的大小,但是add1层具有不同大小的两个输入。由于conv_2层有一个“跨越论”值为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'名称'“俱乐部”)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 /英寸2');

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

analyzeNetwork(lgraph)

输入参数

全部折叠

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

介绍了在R2018a