主要内容

深层网络设计师

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

描述

深层网络设计师App可以让你构建、可视化、编辑和训练深度学习网络。使用这个应用程序,你可以:

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

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

  • 查看和编辑图层属性,并添加新的图层和连接。

  • 对网络进行分析,确保正确定义网络架构,并在培训前发现问题。

  • 导入和可视化数据存储和图像数据,以进行培训和验证。

  • 对图像分类训练数据进行增强,并可视化类标签的分布。

  • 训练网络,用准确性、损失和验证指标的图监控训练。

  • 将训练过的网络导出到工作区或Simulink®

  • MATLAB生成®代码用于构建和训练网络,并使用实验管理器创建超参数调优实验。

打开深度网络设计器应用程序

  • MATLAB工具条:在应用程序选项卡,在机器学习和深度学习,单击应用程序图标。

  • MATLAB命令提示符:输入deepNetworkDesigner

例子

全部展开

在深度网络设计器中检查预先训练的网络。

打开应用程序并选择一个预先训练的网络。方法也可以加载预先训练的网络设计师选项卡并单击.如果需要下载网络,请单击安装打开附加组件资源管理器。深度网络设计器具有适合图像和音频任务的预先训练的网络。加载预先训练的音频网络需要音频工具箱™。

提示

首先,试着选择一个更快的图像分类网络,如SqueezeNet或GoogLeNet。一旦你了解了哪些设置工作得很好,尝试一个更精确的网络,比如Inception-v3或ResNet,看看这是否能改善你的结果。有关选择预训练网络的更多信息,请参见预训练深度神经网络

深度网络设计器开始页显示可用网络

设计师窗格,可视化和探索网络。有关可用的预先训练过的图像分类网络的列表以及如何比较它们,请参见预训练深度神经网络

深度网络设计器显示预先训练的图像分类网络

有关使用深度网络设计器构建网络的信息,请参见用深度网络设计器构建网络

在深度网络设计器中编辑一个用于迁移学习的网络。

迁移学习是将预先训练好的深度学习网络进行微调以学习新任务的过程。您可以使用较少的训练图像快速地将学到的特征转移到新任务中。因此,迁移学习通常比从零开始训练一个网络更快更容易。要使用预训练的网络进行迁移学习,必须更改类的数量以匹配新的数据集。

使用SqueezeNet打开深度网络设计器。

deepNetworkDesigner (squeezenet)

为了使网络能够进行迁移学习,需要替换最后一个可学习层和最后一个分类层。对于SqueezeNet,最后一个可学习层是一个二维卷积层,名为“conv10”

  • 拖动一个新的convolution2dLayer到画布上。设置FilterSize财产1,1NumFilters属性设置为新数量的类。

  • 更改学习速率,使新层中的学习速度比迁移层中的学习速度快WeightLearnRateFactor而且BiasLearnRateFactor值。

  • 删除最后一个convolution2dLayer然后连接你的新图层。

    在深度网络设计器中选择卷积二维层。FilterSize设置为1,1,NumFilters设置为5。

提示

对于大多数预先训练的网络(例如,GoogLeNet),最后一个可学习的层是完全连接层。为迁移学习准备网络,用新的全连接层替换全连接层,并设置OutputSize属性设置为新数量的类。示例请参见开始使用深度网络设计器

接下来,删除分类输出层。然后,拖动一个新的classificationLayer到画布上并连接它。输出层的默认设置意味着网络在训练过程中学习类的数量。

在深度网络设计器中选择分类层。OutputSize设置为auto。

通过单击检查您的网络分析设计师选项卡。该网络已准备好进行培训,如果深度学习网络分析器零错误报告。有关演示如何训练网络对新图像进行分类的示例,请参见基于深度网络设计器的迁移学习

为了帮助理解和编辑图层属性,点击图层名称旁边的帮助图标。

设计师窗格中,选择一个层来查看和编辑属性。点击图层名称旁边的帮助图标,可以获得关于该图层属性的更多信息。

在深度网络设计器中选择的跨通道规范化层

有关层属性的更多信息,请参见深度学习层列表

在深度网络设计器中从工作空间向网络添加层。

在深度网络设计器中,可以通过从控件中拖动内置层来构建网络层的图书馆设计师窗格和连接它们。的网络中添加自定义层设计师窗格。假设您在变量中存储了一个自定义层myCustomLayer

  1. 点击设计师选项卡。

  2. 暂停上从工作空间并点击进口

  3. 选择myCustomLayer并点击好吧

  4. 点击添加

该应用程序将自定义层添加到顶部设计师窗格。要查看新图层,使用鼠标放大或单击放大

连接myCustomLayer对网络的设计师窗格。有关演示如何在深度网络设计器中使用自定义层构建网络的示例,请参见导入自定义层到深度网络设计器

还可以在深度网络设计器中组合网络。例如,可以通过将预先训练的网络与解码器子网络结合起来创建语义分割网络。

导入数据到深度网络设计器进行培训。

您可以使用数据选项卡,导入训练和验证数据。深度网络设计器支持图像数据和数据存储对象的导入。根据任务类型选择导入方法。

任务 数据类型 数据导入方法 可视化例子
图像分类

ImageDatastore对象或包含每个类的图像的子文件夹的文件夹。类标签来源于子文件夹名。

选择导入数据>导入图像数据

“导入镜像数据”对话框

您可以在“导入映像数据”对话框中选择增强选项并指定验证数据。有关更多信息,请参见导入数据到深度网络设计器

深度网络设计器的Data选项卡,显示类标签的直方图和从导入数据中选择的随机图像

其他扩展工作流(例如数字特征输入、内存不足数据、图像处理以及音频和语音处理)

数据存储。

对于其他扩展工作流,使用合适的数据存储对象。例如,AugmentedImageDatastoreCombinedDatastorepixelLabelImageDatastore(计算机视觉工具箱)audioDatastore(音频工具箱),或自定义数据存储。

控件使用的任何数据存储对象都可以导入和训练trainNetwork函数。有关为深度学习应用程序构造和使用数据存储对象的更多信息,请参见用于深度学习的数据存储

选择导入数据>导入数据存储

“导入数据存储”对话框

您可以在“导入数据存储”对话框中指定验证数据。有关更多信息,请参见导入数据到深度网络设计器

“深度网络设计器”的“数据”选项卡,显示数据存储中前五个观察结果的预览

使用深度网络设计器训练深度神经网络。

使用深度网络设计器,您可以使用图像数据或与trainNetwork函数。例如,你可以训练一个语义分割网络或一个多输入网络使用CombinedDatastore对象。有关将数据导入深度网络设计器的详细信息,请参见导入数据到深度网络设计器

对导入到深度网络设计器中的数据进行训练培训选项卡上,单击火车.该应用程序显示了训练进度的动画图。图中显示了小批量损失和准确性,验证损失和准确性,以及关于训练进度的附加信息。剧情有一个停止按钮在右上角。点击按钮,停止训练,返回当前网络状态。

深度网络设计器的训练进度图

有关更多信息,请参见使用深度网络设计器的列车网络

如果您需要对培训进行更大的控制,请单击培训方案选择培训设置。有关选择培训选项的更多信息,请参见trainingOptions

“训练选项”对话框

有关如何训练图像分类网络的示例,请参见基于深度网络设计器的迁移学习.有关如何训练序列对序列LSTM网络的示例,请参见基于深度网络设计器的时间序列预测训练网络

若要用深度网络设计器不支持的数据训练网络,请选择设计师选项卡,并单击出口导出初始网络架构。然后,您可以通过编程方式训练网络,例如,使用自定义训练循环。

将在Deep network Designer中创建的网络体系结构导出到工作区或Simulink中,并生成代码来重新创建网络和训练。

  • 将带有初始权重的网络体系结构导出到工作空间设计师选项卡上,单击出口.根据网络体系结构的不同,深度网络设计器将网络导出为LayerGraphlgraph或作为一个对象

  • 要将在深度网络设计器中训练的网络导出到工作空间,请在培训选项卡上,单击出口.深度网络设计器将训练过的网络体系结构导出为DAGNetwork对象trainedNetwork.Deep Network Designer还将训练结果(如训练和验证精度)导出为结构数组trainInfoStruct

  • 将在深度网络设计器中训练的网络导出到Simulink中培训选项卡上,单击出口>出口到仿真软件.深度网络设计器将训练过的网络保存为一个mat文件,并生成表示训练过的网络的Simulink块。生成的块取决于训练的网络类型。

    • 图像分类器-使用训练过的深度学习神经网络对数据进行分类。

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

    • 有状态的分类-使用训练过的循环神经网络对数据进行分类。

    • 有状态的预测-使用训练过的循环神经网络预测反应。

有关如何从深度网络设计器导出网络到Simulink的示例,请参见从深度网络设计器导出图像分类网络到Simulink

要在深度网络设计器中重新创建和训练网络,请生成MATLAB代码。

  • 要重新创建网络层,请在设计师选项卡上,选择出口>生成代码

  • 上重新创建网络层,包括任何可学习的参数设计师选项卡上,选择出口>生成带有初始参数的代码

  • 上重新创建网络、数据导入和培训培训选项卡上,选择出口>生成培训代码

生成脚本后,可以执行以下任务。

  • 要重新创建应用程序中创建的网络层,请运行以下脚本。如果生成了培训脚本,那么运行该脚本也将复制网络培训。

  • 检查代码,了解如何以编程方式创建和连接层,以及如何训练深度网络。

  • 要修改层,请编辑代码。您还可以运行脚本,并将网络导入到应用程序中进行编辑。

有关更多信息,请参见从深度网络设计器生成MATLAB代码

您还可以使用深度网络设计器创建深度学习实验,通过扫描一系列超参数值或使用贝叶斯优化找到最佳训练选项。举个例子说明如何使用实验管理器要调优在深度网络设计器中训练的网络的超参数,请参见使用深度网络设计器生成实验

相关的例子

编程使用

全部展开

deepNetworkDesigner打开深度网络设计器应用程序。如果深度网络设计器已经打开,deepNetworkDesigner为应用程序带来关注。

deepNetworkDesigner (打开深度网络设计器应用程序,并将指定的网络加载到应用程序中。网络可以是系列网络,DAG网络,图层图,或图层数组。

例如,使用预先训练过的SqueezeNet网络打开深度网络设计器。

网= squeezenet;deepNetworkDesigner(净);

如果“深度网络设计器”已经打开,deepNetworkDesigner(净)为应用程序带来焦点,并提示您添加或替换任何现有的网络。

提示

要训练多个网络并比较结果,请尝试实验管理器.您可以使用深度网络设计器创建适合于实验管理器的实验。

版本历史

介绍了R2018b

Baidu
map