主要内容

深度网络设计器

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

描述

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

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

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

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

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

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

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

  • 培训网络,并使用准确度、损失和验证指标图监控培训。

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

打开深层网络设计师App

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

  • MATLAB命令提示:输入deepNetworkDesigner

例子

全部展开

在Deep network Designer中检查一个简单的预训练图像分类网络。

打开应用程序并选择预训练网络。您也可以通过选择设计师选项卡并单击刚出现的.如果您需要下载网络,那么单击安装以打开附加组件资源管理器。

提示

首先,尝试选择一个速度较快的网络,如SqueezeNet或GoogLeNet。一旦你了解了哪些设置比较好,尝试一个更精确的网络,比如Inception-v3或ResNet,看看这是否能提高你的结果。有关选择预训练网络的更多信息,请参见预训练深度神经网络

设计师窗格中,可视化并浏览网络。有关可用预训练网络的列表以及如何比较这些网络,请参阅预训练深度神经网络

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

通过在Deep network Designer中编辑,为迁移学习准备网络。

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

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

deepNetworkDesigner(挤压网)

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

  • 拖动一个新的卷积层到画布上。设置过滤财产1,1微粒过滤器属性设置为新的类数。

  • 更改学习速率,以便通过增加WeightLearnRateFactor双线性学习因子

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

提示

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

接下来,删除分类输出层。然后,拖动一个新的classificationLayer输出层的默认设置意味着网络在训练期间学习课程的数量。

通过单击来检查您的网络分析设计师标签。如果Deep Learning network Analyzer报告零错误,则网络已准备好接受培训。有关如何训练网络对新图像进行分类的示例,请参见使用Deep Network Designer进行迁移学习

有关了解和编辑图层特性的帮助,请单击图层名称旁边的帮助图标。

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

有关图层特性的详细信息,请参见深度学习层列表

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

在深度网络设计器中,您可以通过从图层库设计师窗格并连接它们。您还可以将自定义层从工作区添加到中的网络设计师窗格。假设您在变量中存储了一个自定义层myCustomLayer

  1. 点击刚出现的设计师标签。

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

  3. 选择myCustomLayer点击好啊

  4. 点击添加

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

连接myCustomLayer到网络中去设计师窗格。有关显示如何在Deep network Designer中使用自定义层构建网络的示例,请参阅将自定义层导入Deep Network Designer

您还可以在Deep Network Designer中组合网络。例如,您可以通过组合预训练网络和解码器子网络来创建语义分段网络。

将数据导入Deep Network Designer进行培训。

你可以使用数据用于导入培训和验证数据的Deep Network Designer选项卡。Deep Network Designer支持导入图像数据和数据存储对象。根据任务类型选择导入方法。金宝app

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

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

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

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

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

数据存储。

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

您可以导入和训练使用的任何数据存储对象列车网络有关为深度学习应用程序构建和使用数据存储对象的更多信息,请参阅用于深度学习的数据存储

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

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

要针对导入到Deep network Designer的数据对网络进行培训,请在训练选项卡上,单击火车。如果您需要对培训进行更大的控制,请单击培训方案选择培训设置。有关选择培训选项的更多信息,请参见培训选项。有关如何培训图像分类网络的示例,请参阅使用Deep Network Designer进行迁移学习

创建并将在Deep network Designer中创建的网络体系结构导出到工作区。

  • 导出具有初始权值的网络架构,在设计师选项卡上,单击出口.根据网络架构,深度网络设计器导出网络作为一个LayerGraphlgraph或作为一个对象

  • 要导出具有训练权重的网络体系结构,请在训练选项卡上,单击出口.Deep Network Designer将经过培训的网络体系结构导出为DAGNetwork对象培训网络.Deep Network Designer还将训练结果(如训练和验证精度)导出为结构数组trainInfoStruct

要重新创建在Deep network Designer中构建和训练的网络,请生成MATLAB代码。

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

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

  • 要训练网络,请运行脚本,然后将层提供给列车网络作用

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

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

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

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

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

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

有关更多信息,请参见从deepnetworkdesigner生成MATLAB代码

您还可以使用生成的脚本作为起点来创建深入学习实验,这些实验将扫描一系列超参数值,或者使用贝叶斯优化来找到最佳的培训选项实验经理要调优在深度网络设计器中训练过的网络的超参数,请参阅调整在Deep Network Designer中生成的代码以用于实验管理器

相关的例子

编程使用

全部展开

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

deepNetworkDesigner(打开Deep Network Designer应用程序,将指定的网络加载到应用程序中。网络可以是系列网络、DAG网络、层图或层数组。

例如,使用预训练的挤压网络打开Deep Network Designer。

网= squeezenet;deepNetworkDesigner(净);

如果Deep Network Designer已打开,deepNetworkDesigner(net)将注意力集中到应用程序上,并提示你添加或替换任何现有网络。

提示

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

介绍了R2018b