深层网络设计师

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

描述

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

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

  • 导入和编辑网络并构建新的网络。

  • 拖放以添加新层并创建新连接。

  • 查看和编辑层属性。

  • 分析网络以确保正确定义网络体系结构,并在培训前发现问题。

  • 为分类问题导入图像数据,并选择增强选项。

  • 训练网络的图像分类任务。

  • 监控培训的准确性、损失和有效性。

  • MATLAB生成®建立和培训网络的代码。

完成设计网络后,可以将其导出到工作区,在那里你可以保存或训练网络。对于图像分类的问题,你也可以培养使用Deep网络设计的网络。您可以导出的培训网络,结果到工作区。

打开Deep Network Designer应用程序

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

  • MATLAB命令提示符:回车deepNetworkDesigner.

例子

全部展开

在Deep network Designer应用程序中检查一个简单的预训练网络。

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

提示

首先,尝试选择一个更快的网络,如SqueezeNet或GoogLeNet。一旦你感觉哪个设置工作得很好,尝试一个更准确的网络,如incepv3或ResNet,看看这是否改善了你的结果。有关选择预训练网络的更多信息,请参见预先训练的深度神经网络.

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

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

将图像数据导入深度网络设计器进行训练。

来导入数据到应用程序中数据选项卡上,单击导入数据.

可以从具有每个类的图像子文件夹的文件夹导入数据,也可以从imageDatastore在工作区中。

深度网络设计器提供了图像增强选项的选择。通过对数据应用随机增量,可以有效地增加训练数据的数量。如果选择增加数据,深度网络设计器会随机打乱每个epoch的训练数据。然后,每个epoch使用一个稍微不同的数据集。

深度网络设计器提供以下扩展选项:

  • x轴上的随机反射

  • y轴上的随机反射

  • 随机旋转

  • 随机重新调节

  • 随机水平翻译

  • 随机垂直翻译

请注意

由于某些扩展不适用于特定的数据集,因此默认情况下,深度网络设计器不会扩展数据。有关更多信息,请参见增加图像的训练与随机几何变换.

通过选择文件夹导入验证数据,或导入imageDatastore从工作空间。您还可以选择将验证数据与培训数据分开。验证数据可以帮助您监视性能并防止过度拟合。

选择培训数据的位置、指定验证数据并设置任何增强选项之后,单击进口来导入数据集。

在Deep network Designer app中编辑,准备一个网络用于转移学习。

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

开深网设计师。

deepNetworkDesigner

通过从深度网络设计器开始页面中选择它来加载一个预先训练好的网络。试着选择SqueezeNet从预训练的网络列表。请点击开放加载网络。

将最后一个可学习层和最后一个分类层替换为可转移学习的网络。

  • 如果最后一个可学习层是2d卷积层(例如,'conv10'层挤压):

    • 拖动一个新的convolutional2dLayer到画布上。设置NumFilters属性设置为类的新数目FilterSize1,- 1.

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

  • 如果最后一个可学习的层是一个完全连接的层(大多数预训练的网络,例如,GoogLeNet):

    • 拖动一个新的fullyConnectedLayer在画布上设置OutputSize属性设置为新的类数。

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

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

检查网络是否准备好进行培训,就可以了设计师选项卡上,单击分析.

要训练网络,选择培训选项卡。有关更多信息,请参见与深度网络设计师一起学习.

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

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

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

在Deep network Designer app中训练一个图像分类网络。

训练一个网络上的图像数据导入到深度网络设计器中,就可以了培训选项卡上,单击火车.如果您需要更好地控制培训,请单击培训方案选择培训设置。有关选择培训选项的更多信息,请参见trainingOptions.

有关如何训练图像分类网络的示例,请参阅与深度网络设计师一起学习.

若要对网络进行其他类型数据的培训,请选择设计师选项卡并单击出口导出初始网络体系结构。然后可以以编程方式训练网络。有关简单示例,请参见使用深度网络设计器创建简单序列分类网络.

导出的网络架构,在深网络设计者创建工作空间。

  • 导出具有初始权值的网络体系结构设计师选项卡上,单击出口.

  • 将训练好的权值导出到网络结构中培训选项卡上,单击出口.

要在Deep network Designer应用程序中重新创建网络层,请生成MATLAB代码。

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

或者,您可以通过选择重新创建您的网络,包括任何可学习的参数出口>生成带有初始参数的代码.

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

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

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

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

  • 要修改层,编辑代码。您也可以运行该脚本并导入网络恢复到应用程序进行编辑。

有关更多信息,请参见生成MATLAB代码来重新创建网络层.

要重新创建在Deep Network Designer应用程序中执行的数据导入和培训,请生成MATLAB代码。

来重新创建数据导入和训练培训选项卡上,选择出口>生成用于培训的代码.

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

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

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

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

有关更多信息,请参见生成MATLAB代码进行网络训练.

相关的例子

提示

要培养多种网络和比较的结果,尝试实验管理器.

介绍了R2018b