主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

深度网络设计器

设计和可视化深度学习网络

说明

您可以使用深度网络设计器导入、构建、可视化和编辑深度学习网络。使用此 App,您可以:

  • 构建、编辑和组合网络。

  • 加载预训练网络,并编辑它们以进行迁移学习。

  • 从 PyTorch® 和 TensorFlow™ 导入网络。

  • 分析网络以确保架构定义正确。

  • 分析网络以使用压缩技术减少内存使用量。

  • 将网络导出到 Simulink®

  • 生成用于构建网络的 MATLAB® 代码。

Deep Network Designer app

打开 深度网络设计器 App

  • MATLAB 工具条:在 App选项卡上的机器学习和深度学习下,点击 App 图标。

  • MATLAB 命令提示符:输入 deepNetworkDesigner

示例

全部展开

为数值特征数据创建分类网络。

打开深度网络设计器。

deepNetworkDesigner

要创建一个空白网络,请在空白网络上暂停,然后点击新建。该 App 会打开一个空白画布,您可以在其中拖放层。

网络层库中,将一个 featureInputLayer 拖到画布上。您可以使用网络层库过滤器来帮助您查找层。选择该层。在属性窗格中,将 Normalization 设置为 "zscore",并将 InputSize 设置为数据中的特征数量。接下来,将一个 fullyConnectedLayer 拖到画布上。要连接这些层,请在 featureInputLayer 上暂停并点击 out 端口。将箭头拖到 fullyConnectedLayerin 端口。

featureInputLayer connected to a fullyConnectedLayer

向画布中添加一个 layerNormalizationLayer,后跟一个 reluLayer,并按顺序连接它们。

A series of layers connected sequentially. The order of the layers is featureInputLayer, fullyConnectedLayer, layerNormalizationLayer, and reluLayer.

最后,添加一个 fullyConnectedLayer,后跟一个 softmaxLayer,并将它们连接起来。对于最后一个 fullyConnectedLayer,选择该层并将 OutputSize 设置为数据中的类数。

要自动对齐层,请点击自动排列

A series of layers connected sequentially. The order of the layers is featureInputLayer, fullyConnectedLayer, layerNormalizationLayer, reluLayer, fullyConnectedLayer, and softmaxLayer,

要检查网络是否准备好进行训练,请选择分析。深度学习网络分析器显示网络没有警告或错误。

Deep Learning Network Analyzer report view. The top shows the number of learnables, layers, warnings, and errors. The left shows a plot of the network and the right shows a table with information about each layer.

要将网络导出到工作区,请点击导出。要生成代码以重新创建网络,请点击导出 > 生成不带参数的网络代码

通过在深度网络设计器中编辑网络,准备网络以进行迁移学习。

迁移学习指采用预训练的深度学习网络并对其进行微调以学习新任务的过程。您可以使用较少数量的训练图像快速地将已学习的特征迁移到新任务。因此,迁移学习通常比从头开始训练网络更快、更简单。要使用预训练网络进行迁移学习,您必须更改类的数量以匹配新数据集。

深度网络设计器提供一系列预训练的图像和音频网络。要浏览预训练网络,请打开深度网络设计器。

deepNetworkDesigner

Deep Network Designer start page with a selection of pretrained networks, such as SqueezeNet, GoogLeNet, and ResNet-50.

对于此示例,在 SqueezeNet 上暂停并点击打开

Deep Network Designer canvas. On the left is the Layer Library with a list of supported layers. In the middle is the network and on the right are the network properties.

要为迁移学习准备网络,请编辑最后一个可学习层。对于 SqueezeNet,最后一个可学习层是二维卷积层 'conv10'

  • 选择 'conv10' 层。在属性窗格的底部,点击解锁层。解锁该层将删除所有层可学习参数。在出现的警告对话框中,点击仍要解锁。这样做会解锁层属性,以便您使其适应新任务。将 NumFilters 属性设置为新的类数量。

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

在 R2023b 之前:要编辑新任务的层属性,您必须替换层,而不是解锁层。

Properties of a convolution2dLayer. The NumFilters property is set to 5, and the WeightLearnRateFactor and BiasLearnRateFactor properties are set to 10.

通过点击分析检查您的网络。如果深度学习网络分析器报告零错误,则表示网络已准备就绪,可以开始训练。要将准备就绪的网络导出到工作区,请点击导出。要生成 MATLAB 代码来创建网络,请点击生成网络代码

有关说明如何训练网络以对新图像进行分类的示例,请参阅使用深度网络设计器为迁移学习准备网络

从 PyTorch® 或 TensorFlow™ 导入一个神经网络。

对于此示例,导入 MNASNet (Copyright© Soumith Chintala 2016) PyTorch 模型。从 MathWorks 网站下载 mnasnet1_0 文件,其大小约为 17 MB。

modelfile = matlab.internal.examples.downloadSupportFile("nnet", ...
    "data/PyTorchModels/mnasnet1_0.pt");
modelfile = 
'C:\Users\jwelding\OneDrive - MathWorks\Documents\MATLAB\Examples\R2025a\supportfiles\nnet\data\PyTorchModels\mnasnet1_0.pt'

要从外部平台导入网络,请使用深度网络设计器。

deepNetworkDesigner

您可以从 PyTorch® 或 TensorFlow™ 导入模型。

Tiles from the Deep Network Designer start page. The tiels show "Blank Network", "From Workspace", "From PyTorch", and "From TensorFlow".

对于 PyTorch® 模型,请点击来自 PyTorch 图标。在导入 PyTorch 模型对话框中,复制模型文件的位置,然后点击导入

Import PyTorch Model dialog box. In the dialog box, you can specify the location of the traced model file. The dialog box displays a note saying that the software might save custom layers to the current folder.

使用深度网络设计器导入 PyTorch 网络时,您可以使用选项来指定网络的输入大小。仅当指定输入大小可使导入成功率提高(例如通过减小自定义层数)时,此选项才可用。

该 App 导入网络并生成导入报告导入报告显示在使用网络进行训练或推断之前需要注意的任何网络问题。例如,如果 App 无法推断输入大小,或您需要完成任何占位符层,则报告会显示警告。

Generated import report showing one warning. The warning states that an imageInputLayer has been automatically added by the software and the InputSize property must be edited before using the network.

有关显示如何将 PyTorch® 网络导入深度网络设计器并修复任何问题的示例,请参阅Import PyTorch Model Using Deep Network Designer

将经过训练的网络从深度网络设计器导出到 Simulink®。

打开深度网络设计器。

deepNetworkDesigner

该 App 具有两种类型的 Simulink 导出:

  • 导出到单一网络模块,例如 Predict 模块

  • 导出到多个层模块

对于其所有层都支持用作层模块的小型网络,建议导出到层模块。对于大型网络或者层不支持用作层模块的网络,建议导出到单一网络模块。如果您的网络层不支持用作层模块,您会看到一则警告。

导出为层模块

对于此示例,请在 LSTM 上暂停并点击打开。要将网络导出到 Simulink,请选择导出 > 导出到 Simulink。在导出到 Simulink 对话框中,将导出为选择为多个层模块。选择一个用来保存包含网络参数的 Simulink 文件的位置,然后点击导出。在导出过程中,如果网络未初始化,则 App 会尝试初始化该网络。

该 App 将创建一个 Simulink 模型。

my_model_1 内点击以查看各个层模块。

有关支持用作层模块的层的列表,请参阅List of Deep Learning Layer Blocks and Subsystems

导出为网络模块

您还可以将模型导出为单一网络模块。在深度网络设计器中,将导出为选择为单一网络模块。在此示例中,该 App 将网络导出为 Stateful Predict 模块。

深度网络设计器使您能够生成用于重新创建网络架构的 MATLAB® 代码。

  • 要重新创建网络中的层,包括任何初始参数,请选择导出 > 生成网络代码。该 App 会创建实时脚本和 MAT 文件,其中包含来自您网络的初始参数(权重和偏置)。请运行该脚本以重新创建网络层,包括来自 MAT 文件的可学习参数。如果要执行迁移学习,请使用此选项来保留权重。

  • 要仅重新创建网络中的层,请选择导出 > 生成不带参数的网络代码。此网络不包含初始参数,如预训练权重。

运行生成的脚本会将网络架构以 dlnetwork 对象形式返回。有关训练从深度网络设计器导出的网络的示例,请参阅深度网络设计器快速入门。要了解有关生成代码的更多信息,请参阅从深度网络设计器生成 MATLAB 代码

相关示例

编程用途

全部展开

deepNetworkDesigner 打开深度网络设计器。如果深度网络设计器已打开,deepNetworkDesigner 会将焦点放在该 App 上。

deepNetworkDesigner(net) 打开深度网络设计器,并将指定的网络加载到该 App 中。网络可以是层数组或 dlnetwork 对象。如果您导入 DAGNetworkSeriesNetwork 对象,则该 App 会尝试将网络转换为 dlnetwork 对象。有关详细信息,请参阅 dag2dlnetwork。如果您导入 LayerGraph 对象,则该 App 会尝试将其转换为 dlnetwork 对象。

如果深度网络设计器已打开,deepNetworkDesigner(net) 会将焦点放在该 App 上,并提示您添加或替换任何现有网络。

deepNetworkDesigner(___,"-v1") 打开该 App 的旧版(R2024a 之前的版本)。此版本支持 DAGNetworkSeriesNetworkLayerGraph 对象。有关详细信息,请参阅默认行为的变化

版本历史记录

在 R2018b 中推出

全部展开