主要内容

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

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

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

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

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

中的网络中,可以将工作区中的层添加到网络中设计师窗格。

  1. 点击

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

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

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

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

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

属性窗格,显示交叉通道normalizationlayer的属性

页上表格中的图层名称可以查看所有图层属性的信息深度学习层列表页面。

一旦构建了网络,就可以对其进行分析以检查错误。有关更多信息,请参见检查网络

转移学习

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

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

负荷预训练网络

打开应用程序,选择一个预先训练好的网络。控件,也可以加载预训练的网络设计师标签,点击.如果需要下载网络,请在网络上暂停,单击安装打开附加组件资源管理器。

提示

首先,尝试选择一个更快的网络,如SqueezeNet或GoogLeNet。一旦您了解了哪些设置工作良好,就可以尝试更准确的网络,例如Inception-v3或ResNet,看看这是否会改善您的结果。有关选择预训练网络的更多信息,请参见预训练的深度神经网络

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

适应预训练网络

为了准备网络进行迁移学习,替换最后的可学习层和最后的分类层。

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

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

    • 改变学习率,使学习在新层比在转移层更快通过增加WeightLearnRateFactor而且BiasLearnRateFactor值。

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

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

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

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

    • 改变学习率,使学习在新层比在转移层更快通过增加WeightLearnRateFactor而且BiasLearnRateFactor值。

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

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

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

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

要检查网络是否为训练做好了准备,请在设计师选项卡上,单击分析

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

你也可以使用预训练的网络和迁移学习来完成回归任务。有关更多信息,请参见将分类网络转换为回归网络

图像分类

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

例如,创建一个网络,在一个由28 × 28图像组成的数据集上训练图像分类,该图像分为10个类。

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

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

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

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

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

数字数据分类

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

您可以使用Deep network Designer构造合适的网络,也可以在命令行中创建网络并将网络导入Deep network Designer。

例如,为具有10个类的数字数据创建一个网络,其中每个观察结果由20个特征组成。

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

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

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

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

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

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

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

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

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

多输入多输出网络

多个输入

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

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

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

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

多个输出

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

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

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

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

深层网络

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

深度网络设计器中多个层的分组选择。

对于训练过的网络,复制层也复制权重和偏差。

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

高级深度学习应用

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

创建语义分割网络

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

创建一个语义分割网络从拖层层的图书馆设计师窗格或在命令行中创建网络并将网络导入到Deep network Designer中。

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

inputSize = [32 32 1];图层= [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 transposedConv2dLayer([4,4],64,“步”(2, 2),“种植”,[1,1,1,1]) convolution2dLayer([1,1],2) softmaxLayer pixelClassificationLayer];deepNetworkDesigner(层)

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

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

创建图像到图像回归网络

图像到图像回归涉及获取输入图像并生成输出图像,通常大小相同。这种类型的网络是有用的超分辨率,着色,或图像去模糊。

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

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

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

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

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

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

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

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

dlnetwork自定义训练循环

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

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

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

检查网络

要检查网络并更详细地检查层,请在设计师选项卡上,单击分析.调查问题并检查层属性以解决网络中的大小不匹配。返回到深度网络设计器编辑层,然后通过单击检查结果分析一次。如果深度学习网络分析器报告零错误,则编辑的网络已经准备好进行训练。

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

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

另请参阅

相关的话题

Baidu
map