深度网络设计器
设计和可视化深度学习网络
说明
您可以使用深度网络设计器导入、构建、可视化和编辑深度学习网络。使用此 App,您可以:
构建、编辑和组合网络。
加载预训练网络,并编辑它们以进行迁移学习。
从 PyTorch® 和 TensorFlow™ 导入网络。
分析网络以确保架构定义正确。
将网络导出到 Simulink®。
生成用于构建网络的 MATLAB® 代码。
![](app_deep_editor.png)
打开 深度网络设计器 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");
要从外部平台导入网络,请使用深度网络设计器。
deepNetworkDesigner
您可以从 PyTorch® 或 TensorFlow™ 导入模型。
对于 PyTorch® 模型,请点击来自 PyTorch 图标。在导入 PyTorch 模型对话框中,复制模型文件的位置,然后点击导入。
使用深度网络设计器导入 PyTorch 网络时,您可以使用选项来指定网络的输入大小。仅当指定输入大小可使导入成功率提高(例如通过减小自定义层数)时,此选项才可用。
该 App 导入网络并生成导入报告。导入报告显示在使用网络进行训练或推断之前需要注意的任何网络问题。例如,如果 App 无法推断输入大小,或您需要完成任何占位符层,则报告会显示警告。
有关显示如何将 PyTorch® 网络导入深度网络设计器并修复任何问题的示例,请参阅Import PyTorch® Model Using Deep Network Designer。
将网络导出到 Simulink
将经过训练的网络从深度网络设计器导出到 Simulink®。
打开深度网络设计器。
deepNetworkDesigner
在 SqueezeNet 上暂停并点击打开。要将网络导出到 Simulink,请选择导出 > 导出到 Simulink。在导出到 Simulink 对话框中,选择保存包含网络参数的 MAT 文件的位置,然后选择导出。在导出过程中,如果网络未初始化,则 App 会尝试初始化该网络。
该 App 生成的模块取决于网络类型。
Predict - 使用经过训练的深度学习神经网络预测响应。
Stateful Predict - 使用经过训练的循环神经网络预测响应。
对于 SqueezeNet,该 App 会生成 Predict 模块。
为网络架构生成 MATLAB 代码
深度网络设计器使您能够生成用于重新创建网络架构的 MATLAB® 代码。
要重新创建网络中的层,包括任何初始参数,请选择导出 > 生成带参数的网络代码。该 App 会创建实时脚本和 MAT 文件,其中包含来自您网络的初始参数(权重和偏置)。请运行该脚本以重新创建网络层,包括来自 MAT 文件的可学习参数。如果要执行迁移学习,请使用此选项来保留权重。
要仅重新创建网络中的层,请选择导出 > 生成不带参数的网络代码。此网络不包含初始参数,如预训练权重。
运行生成的脚本会将网络架构以 dlnetwork
对象形式返回。有关训练从深度网络设计器导出的网络的示例,请参阅深度网络设计器快速入门。要了解有关生成代码的更多信息,请参阅从深度网络设计器生成 MATLAB 代码。
相关示例
编程用途
deepNetworkDesigner
deepNetworkDesigner
打开深度网络设计器。如果深度网络设计器已打开,deepNetworkDesigner
会将焦点放在该 App 上。
deepNetworkDesigner(net
)
net
)deepNetworkDesigner(
打开深度网络设计器,并将指定的网络加载到该 App 中。网络可以是层数组或 net
)dlnetwork
对象。如果您导入 DAGNetwork
或 SeriesNetwork
对象,则该 App 会尝试将网络转换为 dlnetwork
对象。有关详细信息,请参阅 dag2dlnetwork
。如果您导入 LayerGraph
对象,则该 App 会尝试将其转换为 dlnetwork
对象。
如果深度网络设计器已打开,deepNetworkDesigner(net)
会将焦点放在该 App 上,并提示您添加或替换任何现有网络。
deepNetworkDesigner(___,"-v1"
)
"-v1"
)deepNetworkDesigner(___,
打开该 App 的旧版(R2024a 之前的版本)。此版本支持 "-v1"
)DAGNetwork
、SeriesNetwork
和 LayerGraph
对象。有关详细信息,请参阅默认行为的变化。
版本历史记录
在 R2018b 中推出R2024a: 默认行为的变化
从 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 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)