主要内容

分层图

深度学习的网络层图

描述

层图指定了具有更复杂的图结构的深度学习网络的结构,其中各层可以有来自多个层的输入和输出到多个层的输出。具有这种结构的网络称为有向无环图(DAG)网络。在创建分层图对象,您可以使用对象函数绘制图形,并通过添加、删除、连接和断开图层对其进行修改。要训练网络,请将图层图用作列车网络函数。

创建

描述

例子

lgraph=分层图创建不包含任何层的空层图。控件可以向空图添加图层addLayers函数。

例子

lgraph=分层图(从一组网络层创建一个层图,并设置所有物中的层lgraph连接的顺序与在

例子

lgraph=分层图(提取a的层图SeriesNetworkDAGNetwork对象例如,您可以提取预训练网络的层图以执行迁移学习。

lgraph=分层图(数据链路提取a的层图数据链路网络.使用此语法来使用数据链路网络列车网络功能或深度网络设计器

输入参数

全部展开

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

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

数据链路网络输入时,软件从可学习参数中提取数值数据,并将其转换为单精度。

属性

全部展开

此属性是只读的。

网络层,指定为大堆

此属性是只读的。

层连接,指定为具有两列的表。

每个表行表示层图中的一个连接。第一列,来源,指定每个连接的源。第二列,目的地,指定每个连接的目标。连接源和目标为层名称或具有以下格式“layerName / IOName”哪里“爱奥纳姆”是层输入或输出的名称。

数据类型:桌子

此属性是只读的。

网络输入层名称,指定为字符向量的单元格数组。

数据类型:单间牢房

网络输出层名称,指定为字符向量的单元数组。

数据类型:单间牢房

目标函数

addLayers 添加层到层图
removeLayers 从图层图中删除图层
replaceLayer 在层图中替换层
连接层 在层图中连接层
断开层 断开图层图中的图层
情节 绘制神经网络层图

例子

全部崩溃

创建一个空层图和一组层。将层添加到层图中并绘制图。addLayers按顺序连接各层。

lgraph=layerGraph;layers=[imageInputLayer([32 3],“名字”“输入”)卷积2层(3,16,“填充”“一样”“名字”“conv_1”)批处理规范化层(“名字”‘BN_1’) reluLayer (“名字”“relu_1”)]; lgraph=添加层(lgraph,层);图形绘图(lgraph)

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

创建一个图层数组。

层=[imageInputLayer([28 1],“名字”“输入”)卷积2层(3,16,“填充”“一样”“名字”“conv_1”)批处理规范化层(“名字”‘BN_1’) reluLayer (“名字”“relu_1”)];

从图层阵列创建图层图。分层图连接中的所有层按顺序。绘制图层图。

lgraph = layerGraph(层);图绘制(lgraph)

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

加载一个预先训练过的SqueezeNet网络。你可以使用这个训练有素的网络进行分类和预测。

净=挤压净;

要修改网络结构,请首先使用提取DAG网络的结构分层图然后可以使用的对象函数LayerGraph修改网络结构。

lgraph = layerGraph(净)
lgraph = LayerGraph with properties: Layers: [68x1 nnet.cnn.layer.Layer] Connections: [75x2 table] InputNames: {'data'} OutputNames: {'ClassificationLayer_predictions'}

为深度学习创建一个简单的有向无环图(DAG)网络。训练网络对数字图像进行分类。这个例子中的简单网络包括:

  • 各层按顺序连接的一种主分支。

  • 一个快捷方式连接包含一个1乘1的卷积层。快捷连接使参数梯度更容易从输出层流向网络的早期层。

创建网络的主分支作为一个层阵列。加法层对多个输入元素进行求和。指定要求和的添加层的输入数量。为方便以后添加连接,指定第一个ReLU层和添加层的名称。

layers = [imageInputLayer([28 28 1])]“填充”“一样”)batchNormalizationLayer reluLayer(“名字”“relu_1”32岁的)convolution2dLayer (3“填充”“一样”“步”,2) batchNormalizationLayer reluLayer convolution2dLayer(3,32,)“填充”“一样”) batchNormalizationLayer reluLayer additionLayer(2,“名字”“添加”) averagePooling2dLayer (2“步”,2) fulllyconnectedlayer (10) softmaxLayer classificationLayer;

从图层阵列创建图层图。分层图连接中的所有层按顺序。绘制图层图。

lgraph = layerGraph(层);图绘制(lgraph)

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

创建1×1卷积层并将其添加到层图中。指定卷积过滤器的数量和步长,以便激活大小与第三个ReLU层的激活大小匹配。该布置使得加法层能够添加第三ReLU层和1×1卷积层的输出。要检查图层是否在图形中,请绘制图层图形。

skipConv=卷积2dlayer(1,32,“步”2.“名字”“skipConv”); lgraph=addLayers(lgraph,skipConv);图形绘图(lgraph)

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

从。创建快捷连接“relu_1”层的“添加”层。因为您在创建添加层时指定了2作为添加层的输入数量,所以该层有两个名为'在1'“in2”.第三个ReLU层已经连接到'在1'输入。连接“relu_1”层的“skipConv”层与层“skipConv”层的“in2”输入的“添加”层加法层现在将第三个ReLU层和“skipConv”层。要检查层是否连接正确,绘制层图。

lgraph = connectLayers (lgraph,“relu_1”“skipConv”);lgraph = connectLayers (lgraph,“skipConv”“添加/in2”); 图形图(lgraph);

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

加载训练和验证数据,该数据由28×28的数字灰度图像组成。

[XTrain,YTrain]=数字列车4DRARAYDATA;[XValidation,YValidation]=数字4阵列数据;

指定培训选项并培训网络。列车网络每年使用验证数据验证网络ValidationFrequency迭代。

选项=培训选项(“sgdm”...“MaxEpochs”8...“洗牌”“每个时代”...“验证数据”,{XValidation,YValidation},...“验证频率”,30,...“冗长”错误的...“阴谋”“训练进步”); net=列车网络(XTrain、YTrain、lgraph、选项);

Figure Training Progress(01-Sep-2021 08:31:32)包含2个轴对象和另一个uigridlayout类型的对象。轴对象1包含15个patch、text、line类型的对象。轴对象2包含15个patch、text、line类型的对象。

显示经过训练的网络的属性。该网络是DAGNetwork对象。

net=DAG网络,具有以下属性:层:[16x1 nnet.cnn.layer.layer]连接:[16x2表]输入名称:{'imageinput'}输出名称:{'classoutput'}

对验证图像进行分类并计算精度。这个网络非常准确。

YPredicted=分类(净、XValidation);准确度=平均值(预测=验证)
精度=0.9934
介绍了R2017b