主要内容

分析

分析深度学习网络架构

描述

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

例子

分析(分析了SeriesNetwork或者DAGNetwork对象.该功能显示网络体系结构的交互式可视化,并提供有关网络层的详细信息。层信息包括层激活和可学习参数的大小、可学习参数的总数和循环层状态参数的大小。

提示

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

分析(分析层阵列并检测错误和问题Trainnetwork.工作流。

例子

分析(lgraph分析图层图lgraph并检测错误和问题Trainnetwork.工作流。

分析(DLNET.分析了dlnetwork.自定义培训循环工作流的。不支持未连接输入的网络。金宝app

例子

分析(lgraph,'targetusage',目标分析图层图lgraph用于指定的目标工作流。在分析层图时使用此语法dlnetwork.工作流。

例子

全部收缩

装载佩带的Googlenet卷积神经网络。

net = googlenet.
net =具有属性的Dagnetwork:图层:[144×1 nnet.cnn.layer.layer]连接:[170×2表]

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

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

表格中显示层的属性、层的类型、激活层的大小和可学习参数等层信息。一个层的激活是该层的输出。

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

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

分析(净)

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

图层= [imageInputLayer([32 32 3]),“名字”“输入”16) convolution2dLayer(5日,'填充''相同的'“名字”'conv_1') reluLayer (“名字”“relu_1”)卷积2dlayer(3,16,'填充''相同的'“步”2,“名字”'conv_2') reluLayer (“名字”“relu_2”)附加层(2,“名字”“add1”)卷积2dlayer(3,16,'填充''相同的'“步”2,“名字”'conv_3') reluLayer (“名字”“relu_3”)附加层(3,“名字”“add2”)全连接层(10,“名字”'fc'scassificationlayer(“名字”“输出”));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 / in2”);

分析网络架构。分析在网络中找到4个错误。

analyzeNetwork (lgraph)

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

  • 输出类概率的软MAX层必须在分类层之前。修复错误输出分类层,在分类层之前添加一个softmax层。

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

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

  • 所有输入到加法层必须具有相同的大小,但是Add1.图层有两个不同大小的输入。因为conv_2层有一个“步”值为2,该层在前两个维度(空间尺寸)中将激活倍数倍数。从中调整输入大小relu2层,以便它有相同的大小从输入relu1,通过设置删除下采样“步”的价值conv_2层为1。

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

图层= [imageInputLayer([32 32 3]),“名字”“输入”16) convolution2dLayer(5日,'填充''相同的'“名字”'conv_1') reluLayer (“名字”“relu_1”)卷积2dlayer(3,16,'填充''相同的'“步”,1,“名字”'conv_2') reluLayer (“名字”“relu_2”)附加层(2,“名字”“add1”)卷积2dlayer(3,16,'填充''相同的'“步”2,“名字”'conv_3') reluLayer (“名字”“relu_3”)附加层(2,“名字”“add2”)全连接层(10,“名字”'fc')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 / in2”);

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

analyzeNetwork (lgraph)

创建一个自定义训练循环的层图。对于自定义训练循环工作流,层图必须没有输出层。

图层= [imageInputLayer([28 28 1]),'正常化''没有任何'“名字”“输入”20岁的)convolution2dLayer (5“名字”'conv1'batchnormalizationlayer(“名字”“bn1”) reluLayer (“名字”'relu1'20岁的)convolution2dLayer (3'填充',1,“名字”'conv2'batchnormalizationlayer(“名字”“bn2”) reluLayer (“名字”“relu2”)卷积2dlayer(3,20,'填充', 1“名字”'conv3'batchnormalizationlayer(“名字”“bn3”) reluLayer (“名字”“relu3”)全连接层(10,“名字”'fc')softmaxlayer(“名字”“softmax”));lgraph = layerGraph(层);

控件分析图层图分析函数,并设置'targetusage'选项'dlnetwork'

analyzeNetwork (lgraph'targetusage''dlnetwork'

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

输入参数

全部收缩

训练有素的网络,指定为SeriesNetwork或者DAGNetwork对象。您可以通过导入一个预训练的网络(例如,通过使用googlenet.功能)或通过训练自己的网络使用Trainnetwork.

网络层,指定为大批。

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

图层图,指定为aLayerGraph对象。要创建图层图,请使用分层图

用于自定义培训循环的网络,指定为dlnetwork.对象。

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

  • “trainNetwork”- 分析用于使用的层图Trainnetwork.函数。例如,该函数检查层图是否有输出层,是否没有断开连接的层输出。

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

介绍了R2018a