主要内容

analyzeNetwork

分析深度学习网络架构

描述

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

例子

analyzeNetwork (分析系列网络Dagnetwork.目的.该功能显示网络架构的交互式可视化,并提供有关网络层的详细信息。图层信息包括层激活和学习参数的大小,学习参数的总数,以及经常性层的状态参数的大小。

小费

为了交互式地可视化、分析和训练一个网络,使用deepNetworkDesigner(净).有关更多信息,请参阅深层网络设计师

analyzeNetwork (层数分析图层阵列层数并检测错误和问题trainNetwork工作流程。

例子

analyzeNetwork (LGRAPH.分析层图LGRAPH.并检测错误和问题trainNetwork工作流程。

analyzeNetwork (dlnet分析dlnetwork自定义训练循环工作流的对象。不支持具有未连接输入的网络。金宝app

例子

analyzeNetwork (LGRAPH.“TargetUsage”,目标分析层图LGRAPH.对于指定的目标工作流程。在分析图层图时使用此语法dlnetwork工作流程。

例子

全部折叠

加载预先训练好的google网络卷积神经网络。

网= googlenet
net = DAGNetwork with properties: Layers: [144×1 nnet.cnn.layer.Layer]

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

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

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

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

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

analyzeNetwork(净)

创建一个简单的带有快捷连接的卷积网络。以层数组的形式创建网络的主要分支,并从层数组创建层图。layerGraph连接所有图层层数按顺序。

图层= [imageInputlayer([32 32 3],'名称''输入')卷积2dlayer(5,16,“填充”“相同”'名称'“conv_1”)剥离('名称''relu_1') convolution2dLayer(3, 16岁,“填充”“相同”'走吧',2,'名称'“conv_2”)剥离('名称''relu_2') additionLayer (2'名称''Add1') convolution2dLayer(3, 16岁,“填充”“相同”'走吧',2,'名称'“conv_3”)剥离('名称''relu_3') additionLayer (3'名称''Add2') fullyConnectedLayer (10'名称'“俱乐部”) classificationLayer ('名称''输出'));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在网络中查找四个错误。

分析(LGROPH)

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

  • 输出类概率的softmax层必须在分类层之前。中的错误输出分类图层,在分类层之前添加软MAX层。

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

  • add2层被指定为有三个输入,但层只有两个输入。若要修复错误,请将输入数量指定为2

  • 添加层的所有输入必须具有相同的大小,但是add1图层有两个具有不同大小的输入。因为这Conv_2层有一个'走吧'值为2时,这一层在前两个维度(空间维度)下采样激活的倍数为2。来调整输入的大小relu2.层使其具有与输入相同的大小relu1.,通过设置删除下采样'走吧'价值Conv_2第1层。

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

图层= [imageInputlayer([32 32 3],'名称''输入')卷积2dlayer(5,16,“填充”“相同”'名称'“conv_1”)剥离('名称''relu_1') convolution2dLayer(3, 16岁,“填充”“相同”'走吧',1,'名称'“conv_2”)剥离('名称''relu_2') additionLayer (2'名称''Add1') convolution2dLayer(3, 16岁,“填充”“相同”'走吧',2,'名称'“conv_3”)剥离('名称''relu_3') additionLayer (2'名称''Add2') fullyConnectedLayer (10'名称'“俱乐部”) softmaxLayer ('名称''softmax');classificationLayer ('名称''输出'));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');

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

分析(LGROPH)

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

图层= [imageInputLayer([28 28 1],“归一化”“没有”'名称''输入')卷积2dlayer(5,20,'名称'“conv1”) batchNormalizationLayer ('名称''bn1')剥离('名称'“relu1”)卷积2dlayer(3,20,“填充”,1,'名称'“conv2”) batchNormalizationLayer ('名称''bn2')剥离('名称''relu2'20岁的)convolution2dLayer (3“填充”,1,'名称'“conv3”) batchNormalizationLayer ('名称''bn3')剥离('名称''relu3') fullyConnectedLayer (10'名称'“俱乐部”) softmaxLayer ('名称''softmax'));Lgraph = LayerGraph(层);

使用该层图分析图层图analyzeNetwork功能并设置“TargetUsage”选择“dlnetwork”

分析(LGraph,“TargetUsage”“dlnetwork”

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

输入参数

全部折叠

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

网络图层,指定为a数组中。

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

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

用于自定义训练循环的网络,指定为adlnetwork对象。

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

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

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

在R2018A介绍