主要内容

用深度网络设计器构建网络

交互式地构建和编辑深度学习网络深度网络设计器使用这个应用程序,您可以导入网络或从零开始构建网络,查看和编辑层属性,组合网络,并生成代码来创建网络架构。然后可以使用深度网络设计器训练网络,或者在命令行导出网络进行训练。

您可以使用深度网络设计器进行一系列的网络构建任务:

控件中拖动块来组装网络层的图书馆把它们连接起来。要快速搜索层,请使用过滤层的搜索框层的图书馆窗格。

深度网络设计器的设计器窗格,其中imageInputLayer连接到一个convolution2dLayer和一个未连接的reluLayer

的网络中添加工作区的层设计师窗格。

  1. 点击

  2. 暂停上从工作空间并点击进口

  3. 选择要导入的层或网络,单击好吧

  4. 点击添加将层或网络添加到设计师窗格。

您还可以通过单击加载预先训练的网络从开始页选择它们。

要查看和编辑图层属性,请选择一个图层。点击图层名称旁边的帮助图标,查看图层属性信息。

“属性”窗格显示一个crossChannelNormalizationLayer的属性

有关所有图层属性的信息,请单击页上表格中的图层名称深度学习层列表页面。

一旦你构建了你的网络,你可以分析它来检查错误。有关更多信息,请参见检查网络

转移学习

迁移学习是深度学习应用中常用的一种方法。你可以把一个预先训练好的网络作为学习新任务的起点。用迁移学习对网络进行优化通常比用随机初始化的权重从头开始训练网络要快得多,也容易得多。您可以使用较少的训练图像快速地将学到的特征转移到新任务中。

深度网络设计器有一个预先训练的网络选择,适合图像数据的迁移学习。

负载预训练网络

打开应用程序并选择一个预先训练的网络。方法也可以加载预先训练的网络设计师按TAB键并单击.如果需要下载网络,请在网络中暂停,单击安装打开附加组件资源管理器。

提示

首先,试着选择一个更快的网络,如SqueezeNet或GoogLeNet。一旦你了解了哪些设置工作得很好,尝试一个更精确的网络,比如Inception-v3或ResNet,看看这是否能改善你的结果。有关选择预训练网络的更多信息,请参见预训练深度神经网络

深度网络设计器开始页显示可用网络

适应预训练网络

为了使网络能够进行迁移学习,需要替换最后一个可学习层和最后一个分类层。

  • 如果最后一个可学习层是二维卷积层(例如“conv10”层在SqueezeNet):

    • 拖动一个新的convolution2dLayer在画布上。设置NumFilters属性设置为新数量的类和FilterSize1, - 1

    • 更改学习速率,使新层中的学习速度比迁移层中的学习速度快WeightLearnRateFactor而且BiasLearnRateFactor值。

    • 删除最后一个convolution2dLayer然后连接你的新图层。

在深度网络设计器中选择卷积二维层。属性窗格显示FilterSize设置为1,1和NumFilters设置为5。

  • 如果最后一个可学习层是一个完全连接的层(大多数预先训练的网络,例如GoogLeNet):

    • 拖动一个新的fullyConnectedLayer在画布上,设置OutputSize属性设置为新数量的类。

    • 更改学习速率,使新层中的学习速度比迁移层中的学习速度快WeightLearnRateFactor而且BiasLearnRateFactor值。

    • 删除最后一个fullyConnectedLayer然后连接你的新图层。

在深度网络设计器中选择完全连接层。属性窗格显示OutputSize设置为5。

接下来,删除分类输出层。然后,拖动一个新的classificationLayer到画布上并连接它。输出层的默认设置意味着它将在训练期间学习类的数量。

在深度网络设计器中选择分类层。属性窗格显示OutputSize设置为auto。

要检查网络是否准备好进行培训,请在设计师选项卡上,单击分析

有关演示如何重新训练预训练的网络来对新图像进行分类的示例,请参见基于深度网络设计器的迁移学习.如果您有Audio Toolbox™,您还可以加载适合于音频任务的预训练网络。有关演示如何重新训练预训练的网络以分类一组新的音频信号的示例,请参见深度网络设计器中预训练音频网络的迁移学习

您还可以使用预先训练的网络和迁移学习进行回归任务。有关更多信息,请参见将分类网络转换为回归网络

图像分类

中拖动图层,可以使用深度网络设计器构建图像分类网络层的图书馆把它们连接起来。还可以在命令行中创建网络,然后将网络导入到深度网络设计器中。

例如,创建一个网络,对划分为10类的28 × 28图像数据集进行图像分类训练。

inputSize = [28 28 1];numClasses = 10;layers = [imageInputLayer(inputSize) convolution2dLayer(5,20) batchNormalizationLayer reluLayer fullyConnectedLayer(numClasses) softmaxLayer classificationLayer];deepNetworkDesigner(层)

深度网络设计器中的图像分类网络。该网络以图像输入层开始,以分类层结束。

若要使此网络适应您自己的数据,请设置InputSize的图像输入层,以匹配您的图像输入大小和设置OutputSize完全连接层与数据中类数量的关系。对于更复杂的分类任务,创建更深层次的网络。有关更多信息,请参见深层网络

有关演示如何创建和训练图像分类网络的示例,请参见使用深度网络设计器创建简单的图像分类网络

序列的分类

您可以使用深度网络设计器从头构建序列网络,也可以从开始页面使用预先构建的未经训练的网络之一。打开“深度网络设计器”开始页。暂停上Sequence-to-Label并点击开放.这样做可以打开一个适合于序列分类问题的预先构建的网络。

深度网络设计器中的序列分类网络。该网络以序列输入层开始,以分类层结束。

你可以调整这个序列网络来训练你的数据。假设您有12个特性和9个类的数据。若要适应此网络,请选择sequenceInputLayer并设置InputSize12

在深度网络设计器中选择序列输入层。Properties窗格显示InputSize设置为12。

然后,选择fullyConnectedLayer并设置OutputSize9,类的数量。

在深度网络设计器中选择完全连接层。属性窗格显示OutputSize设置为9。

该网络现在已经准备好进行训练。要在深度网络设计器中训练网络,请创建一个CombinedDatastore包含预测器和响应。有关更多信息,请参见导入数据到深度网络设计器.有关演示如何使用深度网络设计器创建组合数据存储和训练序列到序列回归网络的示例,请参见基于深度网络设计器的时间序列预测训练网络.有关演示如何导出在深度网络设计器中构建的网络并使用命令行函数进行训练的示例,请参见使用深度网络设计器创建简单的序列分类网络

数字数据分类

如果您有一个数字特征的数据集(例如,一个没有空间或时间维度的数字数据集合),那么您可以使用特征输入层训练深度学习网络。有关特性输入层的更多信息,请参见featureInputLayer

可以使用深度网络设计器构造合适的网络,也可以在命令行创建网络并将网络导入到深度网络设计器中。

例如,创建一个包含10个类的数字数据网络,其中每个观察结果包含20个特征。

inputSize = 20;numClasses = 10;layers = [featureInputLayer(inputSize,“归一化”“zscore”) fulllyconnectedlayer (50) batchNormalizationLayer reluLayer fullyConnectedLayer(numClasses) softmaxLayer classificationLayer];deepNetworkDesigner(层)

深度网络设计器中的特征分类网络。该网络以特征输入层开始,以分类层结束。

若要使此网络适应您自己的数据,请设置InputSize的特征输入层,以匹配数据中的特征数量并设置OutputSize完全连接层与数据中类数量的关系。对于更复杂的分类任务,创建更深层次的网络。有关更多信息,请参见深层网络

要在Deep network Designer中使用表中的数据训练网络,必须首先将数据转换为合适的数据存储。例如,首先将表转换为包含预测器和响应的数组。然后,将数组转换为arrayDatastore对象。最后,将预测器和响应数组数据存储组合成一个CombinedDatastore对象。然后可以使用组合的数据存储在深度网络设计器中进行训练。有关更多信息,请参见导入数据到深度网络设计器.您还可以使用表格数据和trainNetwork通过将网络导出到工作区来实现。

将分类网络转换为回归网络

通过替换网络的最后几层,可以将分类网络转换为回归网络。当您希望使用预先训练的分类网络并为回归任务重新训练它时,转换是有用的。

例如,假设您有一个经过预先训练的GoogLeNet网络。要将该网络转换为具有单一响应的回归网络,请将最终的全连接层、softmax层和分类输出层替换为具有的全连接层OutputSize设置为1(响应的数量)和一个回归层。

分类网络转换为回归网络的示意图。最后两层分类网络,软最大层和分类层,用回归层代替。

如果输出有多个响应,请更改OutputSize全连接层与响应数的值。

多输入多输出网络

多个输入

如果网络需要来自多个来源或不同格式的数据,则可以定义具有多个输入的网络。例如,有些网络需要从不同分辨率的多个传感器捕获图像数据。

使用深度网络设计器,您可以控制每个层的输入和输出。例如,要创建具有多个图像输入的网络,请创建两个分支,每个分支从一个图像输入层开始。

在深度网络设计器中具有多个输入的网络。该网络有两个图像输入层和一个分类输出层。

您可以使用相同类型的输入训练多输入网络,例如,使用Deep network Designer和一个数据存储对象,训练来自两个不同来源的图像。对于具有多种格式数据的网络,例如图像和序列数据,使用自定义训练循环训练网络。有关更多信息,请参见dlnetwork用于自定义训练循环

多个输出

您可以为需要不同格式的多个响应的任务定义具有多个输出的网络,例如,既需要类别输出又需要数字输出的任务。

使用深度网络设计器,您可以控制每一层的输出。

有多个输出的网络的末端。第一个分支以一个完全连接层和一个softmax层结束。第二个分支以一个完全连接的层结束。

要训练多输出网络,必须使用自定义训练循环。自定义训练循环必须使用dlnetwork对象,该对象不包含任何输出层。有关更多信息,请参见dlnetwork用于自定义训练循环

深层网络

构建大型网络可能是困难的,您可以使用深度网络设计器来加速构建。您可以一次处理多个层块。选择多个图层,然后复制粘贴或删除。例如,您可以使用层块来创建卷积、批处理规范化和ReLU层组的多个副本。

在深度网络设计器中对多层进行分组选择。

对于训练有素的网络,复制层也复制权值和偏差。

您还可以从工作空间复制子网络,使用应用程序轻松连接。要将网络或层导入到应用程序中,单击>从工作区导入.点击添加向当前网络添加层。

高级深度学习应用

您可以使用深度网络设计器为高级应用程序构建和训练网络,例如计算机视觉或图像处理任务。

创建语义分割网络

语义分割描述了将图像的每个像素与一个类标签相关联的过程。语义分割的应用包括用于自动驾驶的道路分割和用于医疗诊断的癌细胞分割。

创建一个语义分割网络通过拖动层从层的图书馆设计师窗格或在命令行创建网络并将网络导入到深度网络设计器中。

例如,基于下采样和上采样设计创建一个简单的语义分割网络。

inputSize = [32 32 1];layers = [imageInputLayer(inputSize) convolution2dLayer([3,3],64,“填充”,[1,1,1,1]) reluLayer maxPooling2dLayer([2,2],“步”, (2, 2)) convolution2dLayer ([3, 3], 64“填充”,[1,1,1,1]) reluLayer转置conv2dlayer ([4,4],64,“步”(2, 2),“种植”,[1,1,1,1]) convolution2dLayer([1,1],2) softmaxLayer pixelClassificationLayer];deepNetworkDesigner(层)

深度网络设计器中的语义分割网络。该网络以图像输入层开始,以像素分类层结束。

有关构建和训练语义分割网络的更多信息,请参见在深度网络设计器中训练简单语义分割网络(计算机视觉工具箱)

创建图像到图像回归网络

图像到图像的回归涉及获取一个输入图像和产生一个输出图像,通常大小相同。这种类型的网络对于超分辨率、着色或图像去模糊非常有用。

您可以使用深度网络设计器创建图像到图像回归网络。例如,创建一个适合于图像到图像回归的简单网络体系结构unetLayers功能从计算机视觉工具箱™。这个函数提供了一个适合于语义分割的网络,可以很容易地用于图像到图像的回归。

创建一个输入大小为28 × 28 × 1像素的网络。

layers = unetLayers([28,28,1],2,“encoderDepth”2);deepNetworkDesigner(层);

设计师窗格中,用回归层替换softmax和像素分类层层的图书馆

像素分类网络转换为图像对图像回归网络的示意图。最后两层分类网络,一个软最大层和一个像素分类层,被一个回归层取代。

选择最后的卷积层并设置NumFilters财产1

在深度网络设计器中选择卷积二维层。属性窗格显示NumFilters设置为1。

有关构建和训练图像到图像回归网络的更多信息,请参见深度网络设计器中的图像到图像回归

dlnetwork自定义训练循环

你可以构建和分析dlnetwork对象使用深度网络设计器。一个dlnetwork对象支持使用自动区分自定义训练循环。当内置训练选项不提供任务所需的训练选项时,使用自定义训练循环。

若要使用自定义训练循环检查网络是否已准备好进行训练,请单击分析>分析dlnetwork.有关更多信息,请参见检查网络

深度网络设计器不支持使用自定义训练循环进行训练。要使用自定义训练循环训练网络,首先要将网络导出到工作区并将其转换为dlnetwork对象。然后,您可以使用dlnetwork对象和自定义训练循环。有关更多信息,请参见使用自定义训练循环训练网络

检查网络

要检查网络并进一步详细检查层,请访问设计师选项卡上,单击分析.研究问题和检查层属性,以解决网络中的大小不匹配。返回到深度网络设计器以编辑层,然后单击检查结果分析一次。如果深度学习网络分析仪报告零错误,那么编辑后的网络就可以进行训练了。

深度学习网络分析仪显示零警告或错误。

您还可以分析自定义培训工作流的网络。点击分析>分析dlnetwork分析网络以供使用dlnetwork对象。例如,Network Analyzer检查层图是否没有任何输出层。

另请参阅

相关的话题

Baidu
map