主要内容

深度网络设计器

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

描述

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

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

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

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

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

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

  • 应用增强到图像分类培训数据,并可视化类标签的分发。

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

  • 将经过培训的网络导出到工作区或Simulink万博1manbetx®

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

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

  • MATLAB TOOLSTRIP:在应用程序标签,下面机器学习和深度学习,单击应用程序图标。

  • MATLAB命令提示符:输入deepnetworkdesigner.

例子

全部展开

在深网络设计师中检查一个简单的预净化图像分类网络。

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

提示

要开始,请尝试选择更快的网络之一,例如挤压仪或Googlenet。一旦您获得了解哪些设置工作,请尝试更准确的网络,例如Inception-V3或Reset,并查看是否可以提高结果。有关选择备用网络的更多信息,请参阅预先训练的深度神经网络

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

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

深度网络设计器显示预先训练的网络

有关使用深网络设计师构建网络的信息,请参阅使用深网络设计师构建网络

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

转移学习是拍摄预训练的深度学习网络和微调它来学习新任务的过程。您可以使用较少数量的培训图像快速将学习功能转移到新任务。因此,转移学习通常比从头划伤训练网络更快和更容易。要使用备用网络进行传输学习,您必须更改匹配新数据集的类数。

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

deepNetworkDesigner(挤压网)

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

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

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

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

    在深网络设计器中选择的卷积2-D层。过滤设置为1,1,NUMFilters设置为5。

提示

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

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

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

通过点击来检查你的网络分析设计师选项卡。网络已经为训练做好了准备深度学习网络分析仪报告零错误。有关展示如何训练网络来对新图像进行分类的示例,请参阅使用Deep Network Designer进行迁移学习

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

设计师窗格,选择一个图层以查看和编辑属性。有关图层属性的更多信息,单击图层名称旁边的“帮助”图标。

在深度网络设计器中选择跨通道标准化层

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

将图层从工作区添加到深网络设计器中的网络。

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

  1. 点击设计师选项卡。

  2. 暂停来自工作区点击进口

  3. 选择myCustomLayer点击好吧

  4. 点击添加

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

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

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

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

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

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

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

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

导入图像数据对话框

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

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

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

数据存储。

对于其他扩展工作流,请使用合适的数据存储对象。例如,AugmentedimageGedataStore.CombinedDatastorePixellabelimagedAtastore.(电脑视觉工具箱),或自定义数据存储。

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

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

导入数据存储区对话框

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

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

使用深网络设计师培训深神经网络。

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

要根据导入到Deep network Designer的数据对网络进行培训,请在训练选项卡,单击火车.该应用程序显示培训进度的动画曲线。该地块显示了迷你批量损失和准确性,验证损失和准确性以及有关培训进展的其他信息。绘图有一个停止按钮在右上角。点击按钮停止训练,返回网络当前状态。

深度网络设计师培训进度图

有关更多信息,请参见使用深度网络设计器训练网络

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

“训练选项”对话框

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

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

将在Deep network Designer中创建的网络架构导出到工作空间或Simulink中,并生成代码来重新创建网络和培训。万博1manbetx

  • 将网络架构与工作空间中的初始权重导出到设计师选项卡,单击出口.根据网络架构,深网络设计器将网络导出为一个分层图lgraph或者作为A.目的层数

  • 要将在Deep network Designer中培训的网络导出到工作区,请在训练选项卡,单击出口. Deep Network Designer将经过培训的网络体系结构导出为DAGNetwork目的训练有素. Deep Network Designer还将训练结果(如训练和验证精度)导出为结构数组trainInfoStruct

  • 将网络培训的网络导出为Simulink,在万博1manbetx训练选项卡,单击出口>导出到Simulin万博1manbetxk.. Deep Network Designer将经过训练的网络保存为MAT文件,并生成表示经过训练的网络的Simulink块。生成的块取决于训练的网络类型。万博1manbetx

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相关例子

程序使用

全部展开

deepnetworkdesigner.打开Deep Network Designer应用程序。如果Deep Network Designer已打开,deepnetworkdesigner.将焦点放在应用程序上。

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

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

网= squeezenet;deepNetworkDesigner(净);

如果深网络设计师已经开放,DeepNetWorkDesigner(网)关注应用程序并提示您添加或替换任何现有网络。

提示

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

在R2018B中介绍