Main Content

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

使用深度网络设计器以交互方式构建和编辑深度学习网络。使用此 App,您可以导入网络或从头开始构建网络,查看和编辑层属性,组合网络,并生成代码来创建网络架构。

您可以使用深度网络设计器执行一序列网络构造任务:

通过从网络层库中拖出模块并连接它们来组建一个网络。要快速搜索层,请使用网络层库窗格中的过滤层搜索框。

Designer pane of Deep Network Designer with an imageInputLayer connected to a convolution2dLayer and an unconnected reluLayer

You can add layers from the workspace to the network in the Designer pane.

  1. Click New.

  2. Pause on From Workspace and click Import.

  3. Choose the layers or network to import and click OK.

  4. Click Add to add the layers or network to the Designer pane.

You can also load pretrained networks by clicking New and selecting them from the start page.

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

Properties pane displaying the properties of a crossChannelNormalizationLayer

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

完成构造网络后,您就可以对它进行分析,以检查是否有错误。有关详细信息,请参阅检查网络

迁移学习

深度学习应用中常常用到迁移学习。您可以采用预训练的网络,基于它学习新任务。与使用随机初始化的权重从头训练网络相比,通过迁移学习微调网络要更快更简单。您可以使用较少数量的训练图像快速地将已学习的特征迁移到新任务。

深度网络设计器提供一系列适用于通过图像数据进行迁移学习的预训练网络。

加载预训练网络

打开 App,选择一个预训练网络。您也可以通过点击新建来加载预训练网络。如果您需要下载网络,请在网络上暂停,然后点击安装打开附加功能资源管理器。

提示

要开始下载,请尝试选择一个更快的网络,例如 SqueezeNet 或 GoogLeNet。一旦您了解到哪些设置运行良好,请尝试更准确的网络,例如 Inception-v3 或 ResNet,看看这是否能改进您的结果。有关选择预训练网络的详细信息,请参阅预训练的深度神经网络

Deep Network Designer start page showing available networks

适应预训练网络

要为迁移学习准备网络,请编辑最后一个可学习层。

  • 如果最后一个可学习层是二维卷积层(例如,SqueezeNet 中的 'conv10' 层):

    • 选择卷积层。在属性窗格的底部,点击解锁层。这将解锁层属性,以便您可以使其适应新任务。将 NumFilters 属性设置为新的类数量。

    • 通过增加 WeightLearnRateFactorBiasLearnRateFactor 值更改学习率,使新层的学习率快于迁移层的学习率。

Convolution 2-D layer selected in Deep Network Designer. The Properties pane shows NumFilters set to 5.

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

    • 选择全连接层。在属性窗格的底部,点击解锁层。这将解锁层属性,以便您可以使其适应新任务。将 OutputSize 属性设置为新类数。

    • 通过增加 WeightLearnRateFactorBiasLearnRateFactor 值更改学习率,使新层的学习率快于迁移层的学习率。

Fully connected layer selected in Deep Network Designer. The Properties pane shows OutputSize set to 5.

要检查网络是否准备好进行训练,请点击分析

有关如何重新训练预训练网络以对新图像进行分类的示例,请参阅使用深度网络设计器为迁移学习准备网络。如果您有 Audio Toolbox™,还可以加载适用于音频任务的预训练网络。有关说明如何重新训练预训练网络以对一组新音频信号进行分类的示例,请参阅Adapt Pretrained Audio Network for New Data Using Deep Network Designer

您还可以使用该 App 从外部平台导入网络。有关详细信息,请参阅Import PyTorch® Model Using Deep Network Designer

图像分类

您可以使用深度网络设计器通过从网络层库中拖动层并连接它们来构建图像分类网络。您也可以在命令行中创建网络,然后将该网络导入深度网络设计器中。

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

inputSize = [28 28 1];
numClasses = 10;

layers = [
    imageInputLayer(inputSize)
    convolution2dLayer(5,20)
    batchNormalizationLayer
    reluLayer
    fullyConnectedLayer(numClasses)
    softmaxLayer];

deepNetworkDesigner(layers)

Image classification network in Deep Network Designer. The network starts with an image input layer and ends with a softmax layer.

要使此网络适应您自己的数据,请将图像输入层的 InputSize 设置为与您的图像输入大小匹配,并将全连接层的 OutputSize 设置为您的数据中的类数目。对于更复杂的分类任务,请创建一个更深的网络。有关详细信息,请参阅深度网络

有关如何创建和训练图像分类网络的示例,请参阅图像分类快速入门

序列分类

您可以使用深度网络设计器从头开始构建一个序列网络,也可以从起始页使用一个预置的未经训练的网络。打开深度网络设计器起始页。在序列到标签上暂停,然后点击打开。这会打开一个适合序列分类问题的预置网络。

Sequence classification network in Deep Network Designer. The network starts with a sequence input layer and ends with a softmax layer.

您可以调整此序列网络,以使用您的数据进行训练。假设您有包含 10 个特征和 5 个类的数据。要调整此网络,请选择 sequenceInputLayer,并将 InputSize 设置为 10

Sequence input layer selected in Deep Network Designer. The Properties pane shows InputSize set to 10.

然后,选择 fullyConnectedLayer,并将 OutputSize 设置为 5,即类的数目。

Fully connected layer selected in Deep Network Designer. The Properties pane shows OutputSize set to 5.

有关如何创建和训练序列分类网络的示例,请参阅深度网络设计器快速入门

数值数据分类

如果您有包含数值特征的数据集(例如,一个不包含空间或时间维度的数值数据集合),则可以使用特征输入层训练深度学习网络。有关特征输入层的详细信息,请参阅 featureInputLayer

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

例如,为包含 10 个类的数值数据创建一个网络,其中每个观测值由 20 个特征组成。

inputSize = 20;
numClasses = 10;

layers = [
featureInputLayer(inputSize,Normalization="zscore")
fullyConnectedLayer(50)
batchNormalizationLayer
reluLayer
fullyConnectedLayer(numClasses)
softmaxLayer];

deepNetworkDesigner(layers)

Feature classification network in Deep Network Designer. The network starts with a feature input layer and ends with a softmax layer.

要使此网络适应您自己的数据,请将特征输入层的 InputSize 设置为与数据中的特征数目匹配,并将全连接层的 OutputSize 设置为与数据中的类数目匹配。对于更复杂的分类任务,请创建一个更深的网络。有关详细信息,请参阅深度网络

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

通过调整网络的最终层,可以将分类网络转换为回归网络。当您要选取一个预训练的分类网络并对其进行重新训练以用于回归任务时,转换非常有用。

例如,假设您有一个 GoogLeNet 预训练网络。要将此网络转换为具有单个响应的回归网络,请删除 softmax 层并将最终全连接层的 OutputSize 设置为 1(响应数量)。

Diagram of the conversion of a classification network into a regression network. The final layer of the classification network, a softmax layer, is removed.

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

多输入和多输出网络

多输入

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

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

Network with multiple inputs in Deep Network Designer. The network has two image input layers and a single softmax layer.

多输出

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

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

The end of a network with multiple outputs. The first branch ends with a fully connected layer and a softmax layer. The second branch ends with a fully connected layer.

深度网络

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

Group selection of multiple layers in Deep Network Designer.

对于经过训练的网络,复制层会同时复制权重和偏置。

您还可以从工作区复制子网络,以便使用该 App 轻松连接。要将网络或层导入 App 中,请点击新建 > 从工作区导入。点击添加将层添加到当前网络。

检查网络

要检查您的网络并进一步检查层,请点击分析。调查问题并检查层属性,以解决网络中的大小不匹配问题。返回到深度网络设计器以编辑层,然后通过再次点击分析检查结果。如果深度学习网络分析器报告零错误,则表示编辑过的网络已准备就绪,可以开始训练。

Deep Learning Network Analyzer showing zero warnings or errors.

另请参阅

| |

相关主题