主要内容

分析

分析深度学习网络架构

描述

使用分析为了可视化和理解网络的体系结构,检查您是否已正确定义了架构,并在培训前检测问题。问题分析检测包括缺失或未连接的层、错误大小的层输入、错误数量的层输入和无效的图结构。

提示

以交互式可视化,分析和培训网络,使用DeepNetWorkDesigner(网).有关更多信息,请参见深网络设计师

训练网络

例子

analyzeNetwork (分析了系列网络DAGNetwork目的.该功能以交互式的方式显示网络架构,并提供有关网络层的详细信息。图层信息包括层激活,学习参数和状态参数的数量和大小。

网络层

例子

analyzeNetwork (层数分析中指定的网络图层层数也可以检测错误和问题Trainnetwork.工作流程。层数可以是A.阵列或A.分层图目的。该功能以交互式的方式显示网络架构,并提供有关网络层的详细信息。图层信息包括层激活,学习参数和状态参数的数量和大小。

例子

analyzeNetwork (层数,'targetusage',目标分析中指定的网络图层层数用于指定的目标工作流。在分析a时使用此语法数组或层图dlnetwork.工作流程。

analyzeNetwork (层数dlX1,…,dlXn“TargetUsage”,“dlnetwork”)使用示例网络输入分析网络层dlX1,…,dlXn.该软件通过网络传播示例输入,以确定层激活、可学习参数和状态参数的数量和大小。使用此语法来分析具有一个或多个未连接到输入层的输入的网络。

dlnetwork.对象

analyzeNetwork (dlnet分析了dlnetwork.自定义训练循环工作流的对象。该功能以交互式的方式显示网络架构,并提供有关网络层的详细信息。图层信息包括层激活,学习参数和状态参数的数量和大小。

analyzeNetwork (dlnetdlX1,…,dlXn分析了dlnetwork.对象使用示例网络输入dlX1,…,dlXn.该软件通过网络传播示例输入,以确定层激活、可学习参数和状态参数的数量和大小。使用此语法分析一个未初始化的dlnetwork.具有一个或多个未连接到输入层的输入。

例子

全部收缩

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

net = googlenet.
net =具有属性的Dagnetwork:图层:[144×1 nnet.cnn.layer.layer]连接:[170×2表] InputNames:{'data'} OutputNames:{'输出'}

分析了网络。分析显示网络架构的交互式图和包含有关网络层信息的表。

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

在表中,查看层信息(如图层属性,图层类型和大小的层次)和学习参数的大小。层的激活是该层的输出。

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

通过单击图层表的右上角的箭头显示每层学习参数的总数,然后选择学术总量.要按列值对图层表进行排序,请将鼠标悬停在列标题上,然后单击出现的箭头。例如,您可以通过从学习参数的总数进行排序,确定哪些图层包含最多参数。

analyzeNetwork(净)

使用快捷连接创建一个简单的卷积网络。将网络的主分支创建为图层数组,并从图层阵列中创建一个图层图。layerGraph连接所有图层层数按顺序。

图层= [imageInputlayer([32 32 3])卷积2dlayer(5,16,'填充'“相同”)剥离('姓名''relu_1') convolution2dLayer(3, 16岁,'填充'“相同”'走吧',2)剥离附加层(2,'姓名''Add1') convolution2dLayer(3, 16岁,'填充'“相同”'走吧',2)剥离附加层(3,'姓名''Add2')全连接层(10)SoftmaxLayer分类层];Lgraph = LayerGraph(层);

创建快捷连接。其中一个快捷连接包含一个1乘1的卷积层Skipconv.

Skipconv = Convolution2dlayer(1,16,'走吧'2,'姓名''skipconv');Lgraph = Addlayers(LAPHAGH,SKIPCONV);Lgraph = ConnectLayers(LAPHAGE,'relu_1'“add1 / in2”);Lgraph = ConnectLayers(LAPHAGE,'Add1'“add2 / in2”);

分析网络架构。分析查找网络中的四个错误。

analyzeNetwork (lgraph)

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

  • Skipconv.图层未连接到网络的其余部分。它应该是捷径连接的一部分Add1.Add2.层。要修复此错误,请连接Add1.Skipconv.Skipconv.Add2.

  • Add2.将图层指定为具有三个输入,但图层只有两个输入。要修复错误,请指定输入的数量2

  • 所有输入到加法层必须具有相同的大小,但是Add1.层有两个不同大小的输入。因为Conv_2层有一个'走吧'值为2时,该层将在前两个维度(空间维度)中对激活进行因子2的采样。来调整输入的大小relu2.层使其具有与输入相同的大小relu1.,通过设置下采样来去除下采样'走吧'价值Conv_2层为1。

将这些修改应用到这个例子开始的层图构造中,并创建一个新的层图。

图层= [imageInputlayer([32 32 3])卷积2dlayer(5,16,'填充'“相同”)剥离('姓名''relu_1') convolution2dLayer(3, 16岁,'填充'“相同”'走吧'1) reluLayer additionLayer (2'姓名''Add1') convolution2dLayer(3, 16岁,'填充'“相同”'走吧',2)剥离附加层(2,'姓名''Add2')全连接层(10)SoftmaxLayer分类层];Lgraph = LayerGraph(层);Skipconv = Convolution2dlayer(1,16,'走吧'2,'姓名''skipconv');Lgraph = Addlayers(LAPHAGH,SKIPCONV);Lgraph = ConnectLayers(LAPHAGE,'relu_1'“add1 / in2”);Lgraph = ConnectLayers(LAPHAGE,'Add1''skipconv');Lgraph = ConnectLayers(LAPHAGE,'skipconv'“add2 / in2”);

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

analyzeNetwork (lgraph)

为自定义训练循环创建一个图层图。对于自定义训练循环工作流程,图层图不得具有输出层。

[imageInputLayer([28 28 1],]),'正常化''没有任何''姓名''输入')卷积2dlayer(5,20,'姓名'“conv1”batchnormalizationlayer('姓名'“bn1”)剥离('姓名''relu1')卷积2dlayer(3,20,'填充',1,'姓名''conv2'batchnormalizationlayer('姓名'“bn2”)剥离('姓名'“relu2”)卷积2dlayer(3,20,'填充',1,'姓名'“conv3”batchnormalizationlayer('姓名'“bn3”)剥离('姓名'“relu3”) fullyConnectedLayer (10'姓名'“俱乐部”)softmaxlayer('姓名''softmax'));Lgraph = LayerGraph(层);

使用该层图分析图层图分析函数,并设置'targetusage'选项'dlnetwork'

analyzeNetwork (lgraph'targetusage''dlnetwork'

在这里,该函数未报告图层图的任何问题。

要分析具有未连接到输入层的输入的网络,您可以向示例网络输入提供示例分析功能。您可以在分析时提供示例输入dlnetwork.对象,或分析时数组或分层图对象用于自定义培训工作流“TargetUsage”、“dlnetwork”名称-值的选择。

定义网络架构。用两个分支构造一个网络。网络需要两个输入,每个分支输入一个输入。使用加法层连接分支。

numFilters = 24;inputSize = [64 64 3];layerbranch1 = [imageInputLayer(inputSize,'正常化''没有任何''姓名''输入')卷积2dlayer(3,6 * numfilters,'填充'“相同”'走吧'2,'姓名'“conv1Branch1”) groupNormalizationLayer ('全频道''姓名'“gn1Branch1”)剥离('姓名'“relu1Branch1”)卷积2dlayer(3,numfilters,'填充'“相同”'姓名''conv2branch1') groupNormalizationLayer ('渠道 - 明智''姓名''gn2branch1') additionLayer (2'姓名'“添加”)剥离('姓名''RECUCOMOMBONED') fullyConnectedLayer (10'姓名'“俱乐部”)softmaxlayer('姓名'“sm”));layersbranch2 = [卷积2dlayer(1,numfilters,'姓名''convbranch2') groupNormalizationLayer ('全频道''姓名''gnbranch2'));Lgraph = LayerGraph(Layersbranch1);Lgraph = Addlayers(LAGHS,LAYERSBRANCH2);Lgraph = ConnectLayers(LAPHAGE,'gnbranch2'“添加/ in2”);

创造dlnetwork..因为这个网络包含一个未连接的输入,所以创建一个未初始化的dlnetwork.对象的'初始化'名称值选项错误的

dlnet = dlnetwork(lgraph,'初始化'、假);

创建示例网络输入与此网络的典型输入相同的大小和格式。对于两个输入,使用批量大小为32.使用带有三个通道的大小64乘6的输入,用于输入到图层'输入'.使用大小64-64的输入,其中18个通道用于输入到图层'convbranch2'

exampleInput = dlArray(RAND([输入32]),'SSCB');exampleeconvbranch2 = dlarray(rand([32 32 18 32])),'SSCB');

检查属性来确定提供示例输入的顺序。

dlnet。层
ans = 12×1 Layer array with layers:1的输入图像输入64×64×3图片2的conv1Branch1卷积144 3×3旋转步(2 - 2)和填充“相同”3“gn1Branch1”集团标准化规范化4的relu1Branch1 ReLU ReLU 5‘conv2Branch1卷积24 3×3的隆起与步幅[1]和填充“相同”6“gn2Branch1”集团标准化规范化7'add' add Element-wise add of 2 input 8 'reluCombined' ReLU ReLU 9 'fc' Fully Connected 10 Fully Connected layer 10 'sm' Softmax Softmax 11 'convBranch2' Convolution 24 1×1 convolutions with stride [1 1] and padding [0 0 0] 12 'gnBranch2' Group Normalization组归一化

分析了网络。控件中需要输入的层的顺序相同,提供示例输入财产的dlnetwork..您必须为所有网络输入提供示例输入,包括连接到输入层的输入。

分析(DLNET,examplyInput,ExampleConvBranch2)

输入参数

全部收缩

训练有素的网络,指定为系列网络或者一个DAGNetwork目的。您可以通过导入佩带的网络(例如,使用)来获得培训的网络googlenet.功能)或使用自己的网络使用Trainnetwork.

网络层,指定为阵列或A.分层图目的。

有关内置图层列表,请参阅深度学习层名单

网络自定义训练循环,指定为dlnetwork.目的。

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

  • 'trainnetwork'- 分析用于使用的层图Trainnetwork.功能。例如,该功能检查图层图是否具有输出层且没有断开连接的层输出。

  • 'dlnetwork'- 分析用于使用的层图dlnetwork.对象。例如,该功能检查图层图没有任何输出层。

示例网络输入,指定为格式化dlarray.对象。该软件通过网络传播示例输入,以确定层激活、可学习参数和状态参数的数量和大小。

当要分析具有未连接到输入层的输入时,请使用示例输入。

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

  • 数组—提供示例输入,其顺序与需要输入的层在大批。

  • 分层图-以要求输入的层出现的相同顺序提供示例输入财产的分层图

  • dlnetwork.—按照列表中列出的输入顺序提供示例输入InputNames财产的dlnetwork.

如果一个层有多个未连接的输入,那么该层的示例输入必须按照它们在该层中出现的顺序分别指定InputNames财产。

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

在R2018A介绍