主要内容

分层图

用于深度学习的网络层图

描述

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

创建

描述

例子

lgraph= layerGraph创建一个不包含层的空层图。控件为空图添加层addLayers函数。

例子

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

例子

lgraph=分层图(Dagnet.提取一个DAGNetwork.例如,可以提取预先训练过的网络的层图来进行迁移学习。

lgraph=分层图(DLNET.提取一个dlnetwork..使用此语法来使用dlnetwork.与之Trainnetwork.函数或深网络设计师

输入参数

展开全部

DAG网络,指定为aDAGNetwork目的。

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

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

属性

展开全部

网络图层,指定为a大批。

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

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

数据类型:桌子

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

数据类型:细胞

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

数据类型:细胞

对象功能

addLayers 添加图层到图层图形
removeLayers 从图层图中删除图层
replaceLayer 在图层图中替换图层
ConnectLayers. 在层图中连接层
脱圆形连接 断开层图中的图层
阴谋 绘制神经网络层图

例子

全部收缩

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

Lgraph = layerGraph;图层= [imageInputLayer([32 32 3],“名字”“输入”)卷积2dlayer(3,16,'填充''相同的'“名字”'conv_1'batchnormalizationlayer(“名字”'bn_1') reluLayer (“名字”“relu_1”)];Lgraph = Addlayers(LAGHAGH,层);图绘制(lgraph)

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

创建一个图层数组。

图层= [imageInputLayer([28 28 1],“名字”“输入”)卷积2dlayer(3,16,'填充''相同的'“名字”'conv_1'batchnormalizationlayer(“名字”'bn_1') reluLayer (“名字”“relu_1”)];

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

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

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

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

net =挤压;

要修改网络结构,请首先通过使用提取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卷积层。快捷连接使参数梯度更容易地从输出层流到网络的早期层。

以层数组的形式创建网络的主要分支。加法层按元素方式对多个输入进行求和。指定要相加的添加层的输入数。所有层必须有名称,所有名称必须是唯一的。

图层= [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”)附加层(2,“名字”“添加”) averagePooling2dLayer (2“步”2,“名字”“avpool”)全连接层(10,“名字”'fc')softmaxlayer(“名字”“softmax”scassificationlayer(“名字”“classOutput”)];

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

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

创建一个1-1卷积层并将其添加到图层图中。指定卷积滤波器和步幅的数量,以便激活大小与激活大小匹配“relu_3”层。这种安排使添加层能够添加输出“skipConv”“relu_3”层。要检查该层是否在图中,请绘制该层图。

Skipconv = Convolution2Dlayer(1,32,“步”2,“名字”“skipConv”);lgraph = addLayers (lgraph skipConv);图绘制(lgraph)

创建快捷连接“relu_1”层的“添加”层。因为您在创建添加层时指定了两个输入数,所以添加层有两个输入名'in1'“in2”.这“relu_3”层已经连接到'in1'输入。连接“relu_1”层的“skipConv”层和“skipConv”层的“in2”输入的“添加”层。加法层现在对“relu_3”“skipConv”层。要检查图层是否正确连接,请绘制图层图。

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

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

[xtrain,ytrain] = DigitTrain4darraydata;[xvalidation,yvalidation] = dimittest4darraydata;

指定培训选项并培训网络。Trainnetwork.使用每个验证数据验证网络ValidationFrequency迭代。

选项=培训选项('sgdm'...“MaxEpochs”8...'洗牌''每个时代'...'vightationdata',{xvalidation,yvalidation},...'验证职业',30,...'verbose',错误的,...“阴谋”“训练进步”);net = trainnetwork(xtrain,ytrain,3.选项);

显示培训网络的属性。网络是一个DAGNetwork目的。

连接:[16×2 table] InputNames: {'input'} OutputNames: {'classOutput'}

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

ypredictict =分类(net,xvalidation);精度=均值(ypredicted == yvalidation)
精度= 0.9930.

尖端

  • 图层图无法指定长短期内存(LSTM)网络的体系结构。有关如何创建LSTM网络的详细信息,请参阅长短时记忆网络

介绍了R2017b