Main Content

深度网络设计器

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

说明

您可以使用深度网络设计器导入、构建、可视化和编辑深度学习网络。使用此 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 端口。

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

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

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

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

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

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

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

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

deepNetworkDesigner

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

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

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

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

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

通过点击分析检查您的网络。如果深度学习网络分析器报告零错误,则表示网络已准备就绪,可以开始训练。要将准备就绪的网络导出到工作区,请点击导出。要生成 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");

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

deepNetworkDesigner

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

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

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

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

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

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

打开深度网络设计器。

deepNetworkDesigner

在 SqueezeNet 上暂停并点击打开。要将网络导出到 Simulink,请选择导出 > 导出到 Simulink。在导出到 Simulink 对话框中,选择保存包含网络参数的 MAT 文件的位置,然后选择导出。在导出过程中,如果网络未初始化,则 App 会尝试初始化该网络。

该 App 生成的模块取决于网络类型。

  • Predict - 使用经过训练的深度学习神经网络预测响应。

  • Stateful Predict - 使用经过训练的循环神经网络预测响应。

对于 SqueezeNet,该 App 会生成 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 中推出

全部展开