主要内容

分析网络

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

描述

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

提示

要以交互方式可视化、分析和训练网络,请使用deepNetworkDesigner(net)。有关详细信息,请参阅深度网络设计器.

训练有素的网络

实例

分析网络()分析系列网络达格网络对象。该功能显示网络架构的交互式可视化,并提供有关网络层的详细信息。层信息包括层激活的数量和大小、可学习的参数和状态参数。

网络层

实例

分析网络()分析中指定的网络层还可以检测的错误和问题列车网络工作流程。可以是数组或分层图对象该功能显示网络体系结构的交互式可视化,并提供有关网络层的详细信息。层信息包括层激活的数量和大小、可学习参数和状态参数。

实例

分析网络(,“TargetUsage”,目标)分析中指定的网络层用于指定的目标工作流。分析工作流时使用此语法的数组或层图数据链路网络工作流程。

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

数据链路网络物体

分析网络(数据链路)分析数据链路网络对象,用于自定义训练循环工作流。该功能显示网络体系结构的交互式可视化,并提供有关网络层的详细信息。层信息包括层激活的数量和大小、可学习参数和状态参数。

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

例子

全部崩溃

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

净=googlenet
net=DAG网络,具有以下属性:层:[144×1 nnet.cnn.layer.layer]连接:[170×2表]输入名称:{'data'}输出名称:{'output'}

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

使用左侧的绘图调查网络架构。在绘图中选择一个图层。选定的图层在绘图和图层表中高亮显示。

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

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

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

分析网络(net)

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

层=[imageInputLayer([32 3])卷积层(5,16,“填充”,“一样”)雷卢耶(“姓名”,“relu_1”)卷积2层(3,16,“填充”,“一样”,“大步走”,2)reluLayer附加层(2,“姓名”,“add1”)卷积2层(3,16,“填充”,“一样”,“大步走”,2)reluLayer附加层(3,“姓名”,“add2”)fullyConnectedLayer(10)softmaxLayer classificationLayer];lgraph=layerGraph(层);

创建快捷连接。其中一个快捷连接包含一个1乘1卷积层斯基普孔夫.

skipConv=卷积2dlayer(1,16,“大步走”2.“姓名”,“skipConv”);lgraph=addLayers(lgraph,skipConv);lgraph=connectLayers(lgraph,“relu_1”,“add1/in2”);lgraph=连接层(lgraph,“add1”,“add2/in2”);

分析网络体系结构。分析网络在网络中查找四个错误。

分析网络(lgraph)

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

  • 这个斯基普孔夫层未连接到网络的其余部分。它应该是网络之间的快捷连接的一部分地址1地址2图层。若要修复此错误,请连接地址1斯基普孔夫斯基普孔夫地址2.

  • 这个地址2层指定有三个输入,但层只有两个输入。若要修复错误,请将输入数指定为2..

  • 添加层的所有输入必须具有相同的大小,但地址1层有两个大小不同的输入conv_2图层有一个“大步走”值为2时,该层在前两个维度(空间维度)中以2的因子对激活进行下采样relu2层,使其与来自的输入具有相同的大小relu1,通过设置“大步走”价值conv_2层到1。

从本例开始,将这些修改应用于层图构造,并创建一个新的层图。

层=[imageInputLayer([32 3])卷积层(5,16,“填充”,“一样”)雷卢耶(“姓名”,“relu_1”)卷积2层(3,16,“填充”,“一样”,“大步走”,1)reluLayer附加层(2,“姓名”,“add1”)卷积2层(3,16,“填充”,“一样”,“大步走”,2)reluLayer附加层(2,“姓名”,“add2”)完整连接层(10)softmaxLayer分类层];lgraph=层图(层);skipConv=卷积2dlayer(1,16,“大步走”2.“姓名”,“skipConv”);lgraph=addLayers(lgraph,skipConv);lgraph=connectLayers(lgraph,“relu_1”,“add1/in2”);lgraph=连接层(lgraph,“add1”,“skipConv”);lgraph=连接层(lgraph,“skipConv”,“add2/in2”);

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

分析网络(lgraph)

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

[imageInputLayer([28 28 1],]),“正常化”,“没有”,“姓名”,“输入”)卷积层(5,20,“姓名”,“conv1”)批处理规范化层(“姓名”,“bn1”)雷卢耶(“姓名”,“relu1”)卷积2层(3,20,“填充”1.“姓名”,“conv2”)批处理规范化层(“姓名”,“bn2”)雷卢耶(“姓名”,“relu2”)卷积层(3,20,“填充”1.“姓名”,“conv3”)批处理规范化层(“姓名”,“bn3”)雷卢耶(“姓名”,“relu3”)完全连接层(10,“姓名”,“fc”)软MaxLayer(“姓名”,“softmax”)]; lgraph=层图(层);

使用分析网络函数并设置“TargetUsage”选项“dlnetwork”.

分析网络(lgraph,“TargetUsage”,“dlnetwork”)

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

要分析具有未连接到输入层的输入的网络,可以向分析网络函数。您可以在分析时提供示例输入数据链路网络对象,或者当您分析数组或分层图使用“TargetUsage”、“dlnetwork”名称值选项。

定义网络架构。构建一个有两个分支的网络。网络接受两个输入,每个分支一个输入。使用附加层连接分支。

numFilters=24;inputSize=[64 64 3];LayerBranch1=[imageInputLayer(inputSize,“正常化”,“没有”,“姓名”,“输入”)卷积2层(3,6*numFilters,“填充”,“一样”,“大步走”2.“姓名”,“conv1Branch1”)组规范化层(“所有频道”,“姓名”,“gn1Branch1”)雷卢耶(“姓名”,“relu1Branch1”)卷积2层(3,numFilters,“填充”,“一样”,“姓名”,“conv2Branch1”)组规范化层(“通道智能”,“姓名”,“gn2Branch1”)附加层(2,“姓名”,“添加”)雷卢耶(“姓名”,“重新组合”)完全连接层(10,“姓名”,“fc”)软MaxLayer(“姓名”,“sm”)];layersBranch2=[convolution2dLayer(1,numFilters,“姓名”,“convBranch2”)组规范化层(“所有频道”,“姓名”,‘gnBranch2’)];lgraph=layerGraph(layersBranch1);lgraph=addLayers(lgraph,layersBranch2);lgraph=connectLayers(lgraph,‘gnBranch2’,“添加/in2”);

创建数据链路网络。由于此网络包含未连接的输入,请创建未初始化的数据链路网络通过设置“初始化”将值选项命名为错误的.

dlnet=dlnetwork(lgraph,“初始化”,假);

创建与此网络的典型输入相同大小和格式的示例网络输入。对于这两个输入,使用32的批处理大小。使用64×64的输入和三个通道作为层的输入“输入”.使用大小为64×64的输入,带有18个通道,用于层的输入“convBranch2”.

exampleInput=dlarray(rand([inputSize 32]),“SSCB”); 例如convBranch2=dlarray(rand([32 18 32]),“SSCB”);

检查网络属性,以确定提供示例输入的顺序。

dlnet.Layers
ans=12×1带层的层阵列:1“输入”图像输入64×64×3图像2“conv1Branch1”卷积144 3×3带跨距卷积[2]和填充“相同的”3“gn1Branch1”组标准化组标准化4“relu1Branch1”ReLU ReLU 5“conv2Branch1”卷积24 3×3带跨距卷积[1]和填充“相同的”6“gn2Branch1”组标准化组标准化7“添加”2个输入的加法元素8“重新组合的”ReLU ReLU 9“fc”完全连接的10个完全连接的层10“sm”Softmax Softmax 11“convBranch2”卷积24 1×1卷积,带跨步[1]和填充[0]12“gnBranch2”组规范化组规范化

分析网络。提供示例输入,其顺序与需要输入的层出现在列表中的顺序相同财产数据链路网络。必须为所有网络输入提供示例输入,包括连接到输入层的输入。

分析网络(dlnet、exampleInput、exampleConvBranch2)

输入参数

全部崩溃

训练有素的网络,指定为系列网络或者达格网络对象。您可以通过导入预训练网络(例如,使用水壶功能)或通过使用列车网络.

网络层,指定为数组或分层图对象

有关内置图层的列表,请参见深度学习层列表.

网络自定义训练循环,指定为数据链路网络对象

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

  • “列车网络”-分析层图,以便使用列车网络函数。例如,该函数检查层图是否有输出层,并且没有断开连接的层输出。

  • “dlnetwork”-分析层图,以便使用数据链路网络例如,该函数检查图层图是否没有任何输出图层。

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

如果要分析具有未连接到输入层的输入的网络,请使用示例输入。

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

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

  • 分层图-提供示例输入,其顺序与需要输入的图层显示在中的顺序相同财产分层图.

  • 数据链路网络—按照列表中列出的输入顺序提供示例输入输入名称财产数据链路网络.

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

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

R2018a中引入