文档

layerGraph

用于深度学习的网络层图

描述

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

创建

描述

例子

lgraph= layerGraph创建不包含任何层的空层图。属性可以向空图形添加层addLayers函数。

例子

lgraph= layerGraph (从网络层数组创建层图,并设置财产。图层lgraph都是以相同的顺序连接的.所有层必须有唯一的、非空的名称。

例子

lgraph= layerGraph (dagNet提取a的层图DAGNetwork.例如,可以提取预训练网络的层图来进行迁移学习。

lgraph= layerGraph (dlnet提取a的层图dlnetwork.使用此语法可以使用dlnetworktrainNetwork函数或深度网络设计器

输入参数

全部展开

DAG网络,指定为aDAGNetwork对象。

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

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

属性

全部展开

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

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

每个表行表示层图中的一个连接。第一列,,指定每个连接的源。第二列,目的地,指定每个连接的目的地。连接源和目的地要么是层名,要么具有表单“layerName / IOName”,在那里“IOName”层输入或输出的名称。

数据类型:表格

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

数据类型:细胞

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

数据类型:细胞

对象的功能

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

例子

全部折叠

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

lgraph = layerGraph;图层= [imageInputLayer([32 32 3],“名字”“输入”) convolution2dLayer(3, 16岁,“填充”“相同”“名字”“conv_1”) batchNormalizationLayer (“名字”“BN_1”) reluLayer (“名字”“relu_1”));lgraph = addLayers(lgraph,layers);图绘制(lgraph)

创建一个图层数组。

图层= [imageInputLayer([28 28 1],“名字”“输入”) convolution2dLayer(3, 16岁,“填充”“相同”“名字”“conv_1”) batchNormalizationLayer (“名字”“BN_1”) reluLayer (“名字”“relu_1”));

从图层数组创建一个图层图。layerGraph连接所有的层按顺序。绘制层图。

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

加载预先训练好的挤压网。如果深度学习工具箱™模型为SqueezeNet网络金宝app支持包未安装时,则软件提供下载链接。你可以使用这个训练过的网络进行分类和预测。

网=挤压网;

为了修改网络结构,首先使用提取DAG网络的结构layerGraph的对象函数LayerGraph修改网络架构。

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

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

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

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

创建网络的主要分支作为层数组。加法层对多个输入元素进行相加。指定添加层要求和的输入数量。所有的层都必须有名称,并且所有的名称必须是唯一的。

图层= [imageInputLayer([28 28 1],“名字”“输入”16) convolution2dLayer(5日,“填充”“相同”“名字”“conv_1”) batchNormalizationLayer (“名字”“BN_1”) reluLayer (“名字”“relu_1”32岁的)convolution2dLayer (3“填充”“相同”“步”2,“名字”“conv_2”) batchNormalizationLayer (“名字”“BN_2”) reluLayer (“名字”“relu_2”32岁的)convolution2dLayer (3“填充”“相同”“名字”“conv_3”) batchNormalizationLayer (“名字”“BN_3”) reluLayer (“名字”“relu_3”) additionLayer (2“名字”“添加”) averagePooling2dLayer (2“步”2,“名字”“avpool”) fullyConnectedLayer (10“名字”“俱乐部”) softmaxLayer (“名字”“softmax”) classificationLayer (“名字”“classOutput”));

从图层数组创建一个图层图。layerGraph连接所有的层按顺序。绘制层图。

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

创建1 × 1卷积层,并将其添加到图层图中。函数的激活大小与卷积滤波器的激活大小相匹配“relu_3”层。的输出“skipConv”而且“relu_3”层。要检查图层是否在图中,请绘制图层图。

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

创建快捷连接“relu_1”图层到“添加”层。因为您在创建加法层时指定了2作为输入的数量,所以该层有两个名为“三机”而且“in2”.的“relu_3”层已经连接到“三机”输入。连接“relu_1”图层到“skipConv”图层和“skipConv”图层到“in2”的输入“添加”层。的输出求和“relu_3”而且“skipConv”层。要检查各层是否正确连接,请绘制层图。

lgraph = connectLayers(“relu_1”“skipConv”);lgraph = connectLayers(“skipConv”“添加/ in2”);图绘制(lgraph);

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

[XTrain,YTrain] = digitTrain4DArrayData;[XValidation,YValidation] = digitTest4DArrayData;

指定培训选项并对网络进行培训。trainNetwork每次使用验证数据验证网络ValidationFrequency迭代。

选项= trainingOptions(“个”...“MaxEpochs”8...“洗牌”“every-epoch”...“ValidationData”{XValidation, YValidation},...“ValidationFrequency”30岁的...“详细”假的,...“阴谋”“训练进步”);net = trainNetwork(XTrain,YTrain,lgraph,options);

显示训练后网络的属性。网络是一个DAGNetwork对象。

net = DAGNetwork with properties: Layers: [16×1 nnet.cnn.layer.Layer] Connections: [16×2 table]

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

ypredict = classification (net,XValidation);accuracy = mean(yexpected == YValidation)
准确度= 0.9968

提示

  • 层图不能指定长短期记忆(LSTM)网络的结构。有关如何创建LSTM网络的详细信息,请参见长短期记忆网络

在R2017b中引入