主要内容

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

建立和编辑深度学习网络交互式使用深层网络设计师使用该应用程序,您可以导入网络或从头开始构建网络,查看和编辑层属性,组合网络,生成代码,创建网络架构。然后,您可以使用深层网络设计器培训您的网络,或在命令行导出网络进行培训。

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

用拖块的方法组装一个网络层的图书馆并连接它们。快速搜索图层,使用过滤层的搜索框层的图书馆窗格。

使用连接到卷积2dlayer和未连接relullayer的imageInputLayer的Deep Network Designer的设计器窗格

控件中的网络可以从工作区中添加层设计师窗格。

  1. 点击

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

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

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

您也可以通过点击加载预先训练过的网络并从起始页选择它们。

要查看和编辑图层属性,选择一个图层。单击图层名称旁边的帮助图标获取有关图层属性的信息。

“属性”窗格,显示跨通道正常化层的属性

控件上的表格中的层名称可获得所有层属性的信息深度学习层列表页面。

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

转移学习

迁移学习通常用于深度学习应用。你可以用一个预先训练好的网络作为学习新任务的起点。用迁移学习对网络进行微调通常比用随机初始化权值从头开始训练网络更快、更容易。您可以使用少量的训练图像快速地将学习到的特征转移到新的任务中。

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

负载Pretrained网络

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

提示

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

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

适应Pretrained网络

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

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

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

    • 改变学习速度,使学习在新层比在转移层更快,通过增加WeightLearnRateFactorBiasLearnRateFactor值。

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

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

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

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

    • 改变学习速度,使学习在新层比在转移层更快,通过增加WeightLearnRateFactorBiasLearnRateFactor值。

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

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

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

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

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

有关如何重新训练一个预先训练过的网络以对新图像进行分类的示例,请参见使用深度网络设计师进行迁移学习

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

图像分类

您可以使用Deep network Designer通过从层的图书馆并连接它们。您也可以在命令行创建网络,然后将网络导入到深度网络设计器。

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

inputSize = [28 28 1];numClasses = 10;layers = [imageInputLayer(inputSize) convolution2dLayer(5,20) batchNormalizationLayer relullayer fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer]; / /创建一个新的层deepNetworkDesigner(层)

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

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

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

序列的分类

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

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

你可以调整这个序列网络,用你的数据进行训练。假设您拥有具有12个特性和9个类的数据。为了适应这个网络,选择sequenceInputLayer并设置InputSize12

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

然后,选择fullyConnectedLayer并设置OutputSize9,班级数。

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

网络现在已经准备好训练了。培养网络深度设计人才,打造网络设计人才CombinedDatastore包含预测因素和反应。有关更多信息,请参见导入数据到深度网络设计器.有关如何使用深度网络设计器创建组合数据存储和训练序列到序列回归网络的示例,请参见基于深度网络设计器的时间序列预测训练网络.有关如何导出Deep network Designer中内置的网络并使用命令行函数进行培训的示例,请参见使用深度网络设计器创建简单的序列分类网络

数字数据分类

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

您可以使用Deep network Designer构建一个合适的网络,或者您可以在命令行创建网络,并将网络导入Deep network Designer。

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

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

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

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

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

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

通过替换网络的最后一层,可以将分类网络转换为回归网络。转换是有用的,当你想要一个预先训练的分类网络,并为回归任务再训练它。

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

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

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

多输入多输出网络

多个输入

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

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

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

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

多个输出

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

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

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

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

深层网络

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

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

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

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

高级深度学习应用

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

创建语义分割网络

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

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

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

inputSize = [32 32 1];[imageInputLayer(inputSize),卷积2dlayer ([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])卷积2dlayer ([1,1],2) softmaxLayer pixelClassificationLayer];deepNetworkDesigner(层)

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

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

创建图像到图像的回归网络

图像到图像的回归包括取一个输入图像并生成一个输出图像,通常大小相同。这种类型的网络对于超分辨率、彩色化或图像去模糊非常有用。

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

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

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

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

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

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

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

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

dlnetwork自定义训练循环

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

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

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

检查网络

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

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

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

另请参阅

相关的话题