主要内容

analyzeNetwork

分析深度学习网络体系结构

描述

使用analyzeNetwork想象和理解网络的体系结构,检查您已经定义了结构正确,培训之前发现问题。的问题,analyzeNetwork检测包括失踪或独立层,输入错误尺寸的层,层输入有误,无效的图结构。

提示

交互式可视化、分析和训练网络,使用deepNetworkDesigner(净)。有关更多信息,请参见深层网络设计师

例子

analyzeNetwork ()分析了网络层由一层一层数组或图表同时检测错误和问题trainNetwork工作流。函数显示一个交互式可视化的网络架构和网络层提供了详细信息。层信息包括类型的大小和格式层激活,可学的和国家的大小和数量的参数。

每个激活维度有一个下面的标签:年代(空间),C(通道),B(批处理),T(时间序列),或U(不明)。

例子

analyzeNetwork (TargetUsage =目标)分析了网络层由一层一层数组或图表指定目标的工作流。使用这种语法在分析层dlnetwork工作流。

analyzeNetwork (,X1,…, XnTargetUsage =“dlnetwork”)分析了层数组或层图使用的例子网络输入X1,…, Xn。软件通过网络传播的例子输入确定的大小和格式层激活,可学的和国家的大小和数量参数,并可学的总数。使用这种语法分析的网络有一个或多个输入不连接到输入层。

例子

analyzeNetwork ()分析了SeriesNetwork,DAGNetwork,或dlnetwork对象

例子

analyzeNetwork (,X1,…, Xn)分析了dlnetwork对象使用例子网络输入X1,…, Xn。软件通过网络传播的例子输入确定的大小和格式层激活,可学的和国家的大小和数量参数,并可学的总数。使用这个语法分析未初始化dlnetwork有一个或多个输入,不连接到输入层。

例子

全部折叠

加载一个pretrained GoogLeNet卷积神经网络。

网= googlenet;

分析了网络。analyzeNetwork显示一个交互式的网络体系结构的情节和一个表包含关于网络层的信息。

analyzeNetwork(净)

调查网络体系结构使用左边的阴谋。选择一层的阴谋。选中的一层一层在情节和突出显示表。

在表中,视图层信息,如层属性,层的层类型和大小激活和可学的参数。一层的激活的输出层。每个激活维度有一个下面的标签:

  • S -空间

  • C -通道

  • B -批观测

  • T -时间和序列

  • U -未指明的

查看尺寸标签了解数据通过网络传播以及层修改激活的大小和布局。

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

深入学习网络分析仪显示的总数可学的网络参数,一个小数位。可学的参数的准确数字,暂停总可学的。显示的数量在每一层可学的参数,点击右上角的箭头层表并选择很多可学的。层表的列的值进行排序,将鼠标悬停在列标题,然后单击出现的箭头。例如,您可以决定哪些层包含最参数通过分类层可学的参数的数量。

创建一个简单的卷积网络与一些跳过连接。创建一个包含网络的主干层数组。

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

层数组转换成一层图和添加跳过连接。跳过的连接包含一个1×1卷积层conv_skip

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

分析网络体系结构使用analyzeNetwork函数。这个函数与三层网络中发现问题。

analyzeNetwork (lgraph)

调查和解决网络中的错误。在这个例子中,以下问题导致错误:

  • conv_skip没有连接到其他的网络。它应该是一个快捷方式之间的连接的一部分add_1add_2层。要修复这个错误,连接add_1conv_skipconv_skipadd_2

  • add_2有三个输入层被指定,但层只有两个输入。修复错误,指定数量的输入2

  • 所有的输入附加层必须有相同的大小,但add_1输入层有两个不同的尺寸。因为conv_2层有一个值为2,这层downsamples激活两倍的两个维度(空间维度)。调整输入的relu2层,因此它具有相同的大小作为输入relu_1删除将采样的的价值conv_2层。

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

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

分析新体系结构。新的网络不包含任何错误和准备训练。

analyzeNetwork (lgraph)

创建一个层循环数组一个定制的培训。定制培训循环工作流,网络不能有一个输出层。

层= [imageInputLayer([28 28 1],正常化=“没有”)convolution2dLayer(5、20、填充=“相同”)batchNormalizationLayer reluLayer convolution2dLayer(3、20、填充=“相同”)batchNormalizationLayer reluLayer convolution2dLayer(3、20、填充=“相同”)batchNormalizationLayer reluLayer fullyConnectedLayer (10) softmaxLayer];

分析了层使用数组analyzeNetwork功能和设置TargetUsage选项“dlnetwork”

analyzeNetwork(层,TargetUsage =“dlnetwork”)

这里,该函数不报告任何问题层数组。

分析一个网络,一个输入,不是连接到一个输入层,您可以提供网络输入示例analyzeNetwork函数。当你分析可以提供示例输入dlnetwork对象,或当你分析数组或LayerGraph通过设置对象定制培训工作流程TargetUsage选项“dlnetwork”

定义网络体系结构。构建一个与两个分支网络。网络有两个输入,一个输入每个分支。连接分支使用附加层。

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

创建dlnetwork。因为这个网络包含一个独立输入,创建一个未初始化的dlnetwork对象通过设置初始化选项

网= dlnetwork (lgraph,初始化= false);

查看网络输入名字。

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

创建示例网络输入相同的大小和格式的典型输入这个网络使用随机的dlarray对象。为输入,使用批处理大小为32。使用一个输入的大小64 - - 64有三个渠道的输入层“输入”。使用一个输入的大小64 -通过与18 - 64的输入渠道层”conv_branch”

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

分析了网络。提供的示例输入的顺序一样InputNames财产的dlnetwork。你必须提供一个示例输入所有网络输入,包括输入连接到输入层。

analyzeNetwork(净(X1, X2)

输入参数

全部折叠

网络层,指定为一个数组或一个LayerGraph对象。

一个内置的图层列表,看到深度学习层的列表

深入学习网络,作为一个指定SeriesNetwork,DAGNetwork,或dlnetwork对象。

目标工作流程,指定为以下之一:

  • “trainNetwork”——分析层图形的使用trainNetwork函数。例如,函数检查层图形输出层并没有断开连接层输出。

  • “dlnetwork”——分析层图使用dlnetwork对象。例如,函数检查层图没有任何输出层。

网络输入,指定为格式化dlarray对象。软件通过网络传播的例子输入确定的大小和格式层激活,可学的和国家的大小和数量参数,并可学的总数。

使用示例输入当您想要分析的网络输入层或没有任何输入,没有连接到输入层。

您必须指定的顺序输入取决于你的网络类型的例子分析:

  • 数组——提供示例的输入图层的顺序相同,需要输入中出现数组中。

  • LayerGraph-提供示例的输入层的顺序相同,需要输入中出现财产的LayerGraph

  • dlnetwork——提供示例的输入在输入中列出的顺序相同InputNames财产的dlnetwork

如果一层有多个无关的输入,然后为该层必须指定输入示例分别在相同的顺序出现在层的InputNames财产。

您必须指定一个例子输入为每个输入到网络,即使输入连接到输入层。

版本历史

介绍了R2018a