主要内容

深层网络设计师

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

描述

Deep Network Designer应用程序允许您构建、可视化、编辑和培训深度学习网络。使用此应用程序,您可以:

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

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

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

  • 分析网络以确保正确定义网络架构,并在培训前检测问题。

  • 导入并可视化数据存储和图像数据,用于培训和验证。

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

  • 培训网络并监控培训的准确性,损失和验证指标。

  • MATLAB生成®网络建设和培训规范。

打开Deep Network Designer应用程序

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

  • MATLAB命令提示符:输入deepNetworkDesigner

例子

全部展开

在深度网络设计器中研究一个简单的预训练图像分类网络。

打开应用程序,选择一个预先训练的网络。您也可以通过选择加载预先训练的网络设计师选项卡并单击. 如果需要下载网络,请单击安装打开加载项资源管理器。

提示

开始时,试着选择一个更快的网络,比如挤压网或谷歌网。一旦您了解了哪些设置工作正常,请尝试更精确的网络,如Inception-v3或ResNet,看看这是否会改善您的结果。有关选择预训练网络的详细信息,请参阅预先训练的深度神经网络

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

有关使用Deep Network Designer构建网络的信息,请参阅使用Deep Network Designer构建网络

在Deep network Designer中编辑一个迁移学习的网络。

迁移学习是利用预先训练好的深度学习网络并对其进行微调以学习新任务的过程。您可以使用较少数量的训练图像将学习到的功能快速传输到新任务。因此,转移学习通常比从头开始训练网络更快、更容易。要使用预训练网络进行迁移学习,必须更改课程数量以匹配新数据集。

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

deepNetworkDesigner (squeezenet)

要为迁移学习准备网络,请替换最后一个可学习层和最终分类层。对于SqueezeNet,最后一个可学习的层是名为“conv10”

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

  • 改变学习速度,使学习在新层比在转移层更快,通过增加加权比率因子BiasLearnRateFactor

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

提示

对于大多数预先训练过的网络(例如GoogLeNet),最后的可学习层是完全连接层。为了使网络为迁移学习做好准备,将全连接层替换为新的全连接层,并设置输出大小属性设置为新的类数量。例如,请参见开始使用Deep Network Designer

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

通过点击来检查你的网络分析设计师选项卡。如果深度学习网络分析仪报告零错误,网络就可以进行训练。有关如何训练网络对新图像进行分类的示例,请参见使用深度网络设计师进行迁移学习

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

设计师窗格中,选择要查看和编辑特性的图层。单击图层名称旁边的帮助图标,了解有关图层特性的详细信息。

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

在Deep network Designer中将工作区中的层添加到网络。

在Deep Network Designer中,可以通过从中拖动内置层来构建网络层的图书馆设计师窗格并连接它们。控件中的网络也可以从工作区中添加自定义层设计师窗玻璃假设变量中存储了一个自定义图层myCustomLayer

  1. 点击设计师选项卡。

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

  3. 挑选myCustomLayer并点击好吧

  4. 点击添加

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

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

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

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

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

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

图像数据存储对象,或包含包含每个类的图像的子文件夹的文件夹。类标签来源于子文件夹名称。

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

您可以在“导入图像数据”对话框中选择增强选项并指定验证数据。有关更多信息,请参见将数据导入Deep Network Designer

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

数据存储。

对于其他扩展工作流,请使用合适的数据存储对象。例如AugmentedImageDatastore,组合数据存储,像素标签图像数据存储(计算机视觉工具箱),或自定义数据存储。

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

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

可以在“导入数据存储”对话框中指定验证数据。有关详细信息,请参阅将数据导入Deep Network Designer

要训练网络上的数据,你导入到深度网络设计师,在培训选项卡,单击火车.如果您需要对培训进行更大的控制,请单击培训方案选择培训设置。有关选择培训选项的详细信息,请参见trainingOptions.有关如何训练图像分类网络的示例,请参见使用深度网络设计师进行迁移学习

创建并导出在Deep network Designer中创建的网络架构到工作空间。

  • 要导出具有初始权重的网络体系结构,请在设计师选项卡,单击出口. 根据网络体系结构,Deep network Designer将网络导出为分层图lgraph或者作为一个对象

  • 以输出网络架构与训练的权重,上培训选项卡,单击出口.深度网络设计器输出训练有素的网络架构作为达格网络对象trainedNetwork.Deep Network Designer还输出训练的结果,如训练和验证的准确性,作为结构数组列车信息结构

要重新创建一个网络,你构建和训练在深网络设计师,生成MATLAB代码。

重新创建网络层,在设计师选项卡上,选择出口>生成代码.或者,您可以通过选择重新创建网络,包括任何可学习的参数出口>用初始参数生成代码. 生成脚本后,可以执行以下任务。

  • 要重新创建应用程序中创建的网络层,运行脚本。

  • 要训练网络,运行脚本,然后将层提供给trainNetwork函数。

  • 检查代码以了解如何以编程方式创建和连接层。

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

重新创建网络,数据导入和培训,在培训选项卡上,选择出口>生成培训代码. 生成脚本后,可以执行以下任务。

  • 要重新创建网络层和在应用程序中执行的培训,请运行脚本。

  • 检查代码以学习如何以编程方式导入数据,并构建和训练网络。

  • 修改代码以尝试不同的网络架构和培训选项,并查看它们如何影响结果。

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

您还可以使用生成的脚本作为起点,创建深度学习实验,该实验扫描一系列超参数值或使用贝叶斯优化来找到最佳训练选项。以示例说明如何使用实验管理器要调整在Deep network Designer中培训的网络的超参数,请参阅在实验管理器中使用深度网络设计器生成的代码

相关实例

程序化使用

全部展开

deepNetworkDesigner打开深度网络设计器应用程序。如果深度网络设计器已经打开,deepNetworkDesigner将焦点放在应用程序上。

deepNetworkDesigner ()打开Deep Network Designer应用程序并将指定的网络加载到该应用程序中。网络可以是串联网络、DAG网络、层图或层阵列。

例如,使用预先训练过的SqueezeNet网络打开Deep Network Designer。

净=挤压净;deepNetworkDesigner(net);

如果深层网络设计器已经打开了,deepNetworkDesigner(净)关注应用程序并提示您添加或替换任何现有网络。

提示

要训练多个网络并比较结果,请尝试实验管理器

在R2018b中引入