主要内容

网络层用于深度学习

描述

定义用于深度学习的神经网络架构的层。

创建

获取MATLAB中的深度学习层列表®,请参阅深度学习层列表.为了指定所有层按顺序连接的神经网络的体系结构,直接创建一个层数组。要指定层可以有多个输入或输出的网络体系结构,请使用LayerGraph对象。

或者,你也可以从Caffe, Keras和ONNX导入图层importCaffeLayersimportKerasLayers,importONNXLayers分别。

若要了解如何创建自己的自定义层,请参见定义自定义深度学习层

对象的功能

trainNetwork 训练深度学习神经网络

例子

全部折叠

定义用于分类的卷积神经网络架构,包括一个卷积层、一个ReLU层和一个全连接层。

层= [...imageInputLayer([28 28 3]) convolution2dLayer([5 5],10) reluLayer fullyConnectedLayer(10) softmaxLayer classificationLayer]
2 "二维卷积10个5x5卷积与跨步[1 1]和填充[0 0 0 0 0]3 " ReLU ReLU 4 "全连接10全连接层5 " Softmax Softmax 6 "分类输出crossentropyex

是一个对象。

或者,您可以单独创建这些层,然后将它们连接起来。

input = imageInputLayer([28 28 3]);conv = convolution2dLayer([5 5],10);relu = reluLayer;fc = fullyConnectedLayer(10);sm = softmaxLayer;co = classificationLayer;层= [...输入conv relu fc sm co]
2 "二维卷积10个5x5卷积与跨步[1 1]和填充[0 0 0 0 0]3 " ReLU ReLU 4 "全连接10全连接层5 " Softmax Softmax 6 "分类输出crossentropyex

定义用于分类的卷积神经网络架构,包括一个卷积层、一个ReLU层和一个全连接层。

层= [...imageInputLayer([28 28 3]) convolution2dLayer([5 5],10) reluLayer fullyConnectedLayer(10) softmaxLayer classificationLayer];

通过选择第一个图层显示图像输入层。

层(1)
ans = ImageInputLayer with properties: Name: " InputSize: [28 28 3] SplitComplexInputs: 0 Hyperparameters DataAugmentation: 'none'归一化:'zerocenter' NormalizationDimension: 'auto' Mean: []

查看图像输入层的输入大小。

层(1)。InputSize
ans =1×328 28 3

显示卷积层的步幅。

层(2)。步
ans =1×21

访问全连接层的偏置学习率因子。

层(4)。BiasLearnRateFactor
Ans = 1

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

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

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

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

图层= [imageInputLayer([28 28 1])卷积2dlayer (5,16,“填充”“相同”reluLayer()“名字”“relu_1”32岁的)convolution2dLayer (3“填充”“相同”“步”,2)卷积2dlayer (3,32,“填充”“相同”(2)“名字”“添加”) averagePooling2dLayer (2“步”,2) fullyConnectedLayer(10) softmaxLayer classificationLayer];

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

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作为输入的数量,所以该层有两个名为“三机”而且“in2”.第三个ReLU层已经连接到“三机”输入。连接“relu_1”图层到“skipConv”图层和“skipConv”图层到“in2”的输入“添加”层。加法层现在将第三个ReLU层和“skipConv”层。要检查各层是否正确连接,请绘制层图。

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

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

加载训练和验证数据,这些数据由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: [16x1 nnet.cnn.layer.Layer] Connections: [16x2 table] InputNames: {'imageinput'} OutputNames: {'classoutput'}

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

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

版本历史

在R2016a中引入