深度网络设计器
设计和可视化深度学习网络
说明
您可以使用深度网络设计器导入、构建、可视化和编辑深度学习网络。使用此 App,您可以:
构建、编辑和组合网络。
加载预训练网络,并编辑它们以进行迁移学习。
从 PyTorch® 和 TensorFlow™ 导入网络。
分析网络以确保架构定义正确。
分析网络以使用压缩技术减少内存使用量。
将网络导出到 Simulink®。
生成用于构建网络的 MATLAB® 代码。

打开 深度网络设计器 App
MATLAB 工具条:在 App选项卡上的机器学习和深度学习下,点击 App 图标。
MATLAB 命令提示符:输入
deepNetworkDesigner
。
示例
为数值特征数据创建分类网络。
打开深度网络设计器。
deepNetworkDesigner
要创建一个空白网络,请在空白网络上暂停,然后点击新建。该 App 会打开一个空白画布,您可以在其中拖放层。
从网络层库中,将一个 featureInputLayer
拖到画布上。您可以使用网络层库过滤器来帮助您查找层。选择该层。在属性窗格中,将 Normalization
设置为 "zscore"
,并将 InputSize
设置为数据中的特征数量。接下来,将一个 fullyConnectedLayer
拖到画布上。要连接这些层,请在 featureInputLayer
上暂停并点击 out
端口。将箭头拖到 fullyConnectedLayer
的 in
端口。
向画布中添加一个 layerNormalizationLayer
,后跟一个 reluLayer
,并按顺序连接它们。
最后,添加一个 fullyConnectedLayer
,后跟一个 softmaxLayer
,并将它们连接起来。对于最后一个 fullyConnectedLayer
,选择该层并将 OutputSize
设置为数据中的类数。
要自动对齐层,请点击自动排列。
要检查网络是否准备好进行训练,请选择分析。深度学习网络分析器显示网络没有警告或错误。
要将网络导出到工作区,请点击导出。要生成代码以重新创建网络,请点击导出 > 生成不带参数的网络代码。
通过在深度网络设计器中编辑网络,准备网络以进行迁移学习。
迁移学习指采用预训练的深度学习网络并对其进行微调以学习新任务的过程。您可以使用较少数量的训练图像快速地将已学习的特征迁移到新任务。因此,迁移学习通常比从头开始训练网络更快、更简单。要使用预训练网络进行迁移学习,您必须更改类的数量以匹配新数据集。
深度网络设计器提供一系列预训练的图像和音频网络。要浏览预训练网络,请打开深度网络设计器。
deepNetworkDesigner
对于此示例,在 SqueezeNet 上暂停并点击打开。
要为迁移学习准备网络,请编辑最后一个可学习层。对于 SqueezeNet,最后一个可学习层是二维卷积层 'conv10'
。
选择
'conv10'
层。在属性窗格的底部,点击解锁层。解锁该层将删除所有层可学习参数。在出现的警告对话框中,点击仍要解锁。这样做会解锁层属性,以便您使其适应新任务。将 NumFilters 属性设置为新的类数量。通过将 WeightLearnRateFactor 和 BiasLearnRateFactor 值增加到 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");
modelfile = 'C:\Users\jwelding\OneDrive - MathWorks\Documents\MATLAB\Examples\R2025a\supportfiles\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
该 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(
打开深度网络设计器,并将指定的网络加载到该 App 中。网络可以是层数组或 net
)dlnetwork
对象。如果您导入 DAGNetwork
或 SeriesNetwork
对象,则该 App 会尝试将网络转换为 dlnetwork
对象。有关详细信息,请参阅 dag2dlnetwork
。如果您导入 LayerGraph
对象,则该 App 会尝试将其转换为 dlnetwork
对象。
如果深度网络设计器已打开,deepNetworkDesigner(net)
会将焦点放在该 App 上,并提示您添加或替换任何现有网络。
deepNetworkDesigner(___,
打开该 App 的旧版(R2024a 之前的版本)。此版本支持 "-v1"
)DAGNetwork
、SeriesNetwork
和 LayerGraph
对象。有关详细信息,请参阅默认行为的变化。
版本历史记录
在 R2018b 中推出使用深度网络设计器查看嵌套层内部。例如,您现在可以查看 NetworkLayer
对象内部。从 PyTorch 和 TensorFlow 等外部平台导入网络时,嵌套层很常见。要查看嵌套层内部,请双击该层。有关说明如何构建、可视化和训练具有嵌套层的网络的示例,请参阅Create and Train Network with Nested Layers。
从 R2025a 开始,默认情况下,深度网络设计器使用 NetworkLayer
对象表示 PyTorch 和 TensorFlow 网络合成。在 R2025a 之前,该 App 使用嵌套的自定义层来表示网络合成。
使用深度网络设计器将深度神经网络导出到 Simulink 层模块。该 App 将返回一个 Simulink 模型,其中包含与您的网络中的层对应的模块。有关支持的层的详细信息,请参阅List of Deep Learning Layer Blocks and Subsystems。
从 R2025a 开始,将网络导出到 Simulink 时,该 App 会根据您的网络架构选择默认行为。如果所有层都支持用作层模块,则默认导出类型为层模块。否则,默认导出类型为导出到诸如 Predict 或 Stateful Predict 模块的网络模块。
从 R2025a 开始,有关量化的信息包含在执行压缩分析选项提供的报告中。
现在,压缩分析报告包含以下信息:
通过量化可能实现的最大内存减少
对网络层的量化支持
有关神经网络压缩技术的详细信息,请参阅Reduce Memory Footprint of Deep Neural Networks。
现在,深度网络设计器包括以下几个在使用该 App 时可以增强用户体验的功能:
使用键盘快捷方式进行确认或关闭对话框。
指定网络的导出名称。
直接在该 App 中查看网络分析信息。
现在,深度网络设计器起始页包含一个用于多层感知器 (MLP) 神经网络的模板。您可以使用此模板快速创建适用于特征分类任务的 MLP 网络。
现在,您可以使用深度网络设计器来分析神经网络的可压缩性。例如,您可以使用泰勒剪枝或投影技术来检查网络层可实现的最大内存减少量。
在深度网络设计器中打开您的网络。然后点击分析以进行压缩。
压缩分析报告包含以下相关信息:
可能实现的最大内存减少量
剪枝和投影支持
网络架构对单个层剪枝能力的影响
层内存
现在,深度网络设计器起始页包含用于一维卷积神经网络的模板。您可以使用这些模板快速创建适用于“序列到标签”分类任务和“序列到序列”分类任务的一维卷积神经网络。
从 R2024a 开始,深度网络设计器默认创建 dlnetwork
对象。如果您导入 DAGNetwork
或 SeriesNetwork
对象,则该 App 会尝试将网络转换为 dlnetwork
对象。有关详细信息,请参阅 dag2dlnetwork
。如果您导入 LayerGraph
对象,则该 App 会尝试将其转换为 dlnetwork
对象。
dlnetwork
对象有几项优势,推荐使用该对象,而不推荐使用 DAGNetwork
、SeriesNetwork
或 LayerGraph
对象。
dlnetwork
对象是一种统一的数据类型,支持网络构建、预测、内置训练、可视化、压缩、验证和自定义训练循环。dlnetwork
对象支持更广泛的网络架构,您可以创建或从外部平台导入这些网络架构。trainnet
函数支持dlnetwork
对象,这使您能够轻松指定损失函数。您可以从内置损失函数中进行选择或指定自定义损失函数。使用
dlnetwork
对象进行训练和预测通常比使用LayerGraph
和trainNetwork
工作流更快。
要从 R2024a 之前的版本中复制该 App 的行为,请使用 "-v1"
标志。
deepNetworkDesigner("-v1") deepNetworkDesigner(net,"-v1")
深度网络设计器行为比较
不推荐 | 推荐 |
---|---|
在深度网络设计器的旧版中,当您使用
| 从 R2024a 开始,在深度网络设计器中使用
|
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)