主要内容

深度网络设计器

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

描述

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

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

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

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

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

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

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

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

  • 将经过培训的网络导出到工作区或Simulink金宝app®

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

打开深层网络设计师App

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

  • MATLAB命令提示:输入deepNetworkDesigner

例子

全部展开

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

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

提示

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

显示可用网络的Deep Network Designer起始页

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

显示预训练网络的Deep Network Designer

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

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

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

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

deepNetworkDesigner(挤压网)

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

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

  • 更改学习速率,以便通过增加加权比率因子BiasLearnRateFactor价值观

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

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

提示

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

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

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

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

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

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

在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对象,或包含包含每个类的图像的子文件夹的文件夹。类标签来源于子文件夹名称。

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

“导入图像数据”对话框

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

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

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

数据存储。

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

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

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

“导入数据存储”对话框

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

Deep Network Designer的“数据”选项卡,显示数据存储中前五个观测值的预览

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

使用deepnetworkdesigner,您可以使用图像数据或使用的任何数据存储对象来训练网络trainNetwork作用例如,您可以使用组合数据存储对象有关将数据导入Deep Network Designer的更多信息,请参阅导入数据到深度网络设计器

要根据导入到Deep network Designer的数据对网络进行培训,请在训练选项卡上,单击火车.该应用程序会显示训练进度的动画情节。该图显示了小批损失和准确性,验证损失和准确性,以及培训进展的附加信息。这个情节有一个停止按钮在右上角。单击按钮停止培训并返回网络的当前状态。

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

有关详细信息,请参阅使用深度网络设计器训练网络

如果您需要更好地控制培训,请单击培训方案选择培训设置。有关选择培训选项的更多信息,请参阅培训选项

深层网络设计器中的“培训选项”对话框

有关如何训练图像分类网络的示例,请参见使用Deep Network Designer进行迁移学习. 有关如何将序列训练到序列LSTM网络的示例,请参阅使用深度网络设计器进行时间序列预测的训练网络

要在Deep network Designer不支持的数据上训金宝app练网络,请选择设计师选项卡,然后单击出口导出初始网络体系结构。然后,您可以通过编程方式训练网络,例如,使用自定义训练循环。

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

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

  • 要将在Deep network Designer中培训的网络导出到工作区,请在训练选项卡上,单击出口. Deep Network Designer将经过培训的网络体系结构导出为达格网络对象trainedNetwork. Deep Network Designer还将训练结果(如训练和验证精度)导出为结构数组列车信息结构

  • 将在Deep network Designer中训练的网络输出到Simulink,上金宝app训练选项卡上,单击出口>出口到仿真软件金宝app. Deep Network Designer将经过训练的网络保存为MAT文件,并生成表示经过训练的网络的Simulink块。生成的块取决于训练的网络类型。金宝app

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

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

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

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

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

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

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

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

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

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

  • 检查代码,学习如何以编程方式创建和连接层,以及如何训练一个深层网络。

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

有关详细信息,请参阅从deepnetworkdesigner生成MATLAB代码

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

相关的例子

编程使用

全部展开

deepNetworkDesigner打开Deep Network Designer应用程序。如果Deep Network Designer已打开,deepNetworkDesigner为应用程序带来焦点。

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

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

net=挤压网;deepNetworkDesigner(net);

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

提示

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

介绍了R2018b