main content

设计、可视化和训练深度学习网络 -凯发k8网页登录

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

自 r2018b 起

说明

深度网络设计器可用于构建、可视化、编辑和训练深度学习网络。使用此 app,您可以:

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

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

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

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

  • 导入并可视化数据存储和图像数据,以便进行训练和验证。

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

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

  • 将经过训练的网络导出到工作区或 simulink®

  • 生成用于构建和训练网络的 matlab® 代码,并使用试验管理器创建超参数调节试验。

打开 深度网络设计器 app

  • matlab 工具条:在 app选项卡上的机器学习和深度学习下,点击 app 图标。

  • matlab 命令提示符:输入 deepnetworkdesigner

示例

在深度网络设计器中检查预训练网络。

打开 app,选择一个预训练网络。您也可以通过选择设计器选项卡并点击新建来加载一个预训练网络。如果您需要下载网络,可点击安装,打开附加功能资源管理器。深度网络设计器包含适用于图像和音频任务的预训练网络。加载预训练的音频网络需要 audio toolbox™。

提示

要开始下载,请尝试选择一个更快的图像分类网络,例如 squeezenet 或 googlenet。一旦您了解到哪些设置运行良好,请尝试更准确的网络,例如 inception-v3 或 resnet,看看这是否能改进您的结果。有关选择预训练网络的详细信息,请参阅预训练的深度神经网络

deep network designer start page showing available networks

设计器窗格中,可视化并探查网络。有关可用预训练图像分类网络的列表以及如何比较它们,请参阅预训练的深度神经网络

deep network designer displaying a pretrained image classification network

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

通过在深度网络设计器中编辑网络,准备网络以进行迁移学习。

迁移学习指采用预训练的深度学习网络并对其进行微调以学习新任务的过程。您可以使用较少数量的训练图像快速地将已学习的特征迁移到新任务。因此,迁移学习通常比从头开始训练网络更快、更简单。要使用预训练网络进行迁移学习,您必须更改类的数量以匹配新数据集。

用 squeezenet 打开深度网络设计器。

deepnetworkdesigner(squeezenet)

要为迁移学习准备网络,请替换最后一个可学习层和最终分类层。对于 squeezenet,最后一个可学习层是名为 'conv10' 的二维卷积层。

  • 将一个新 convolution2dlayer 拖到画布上。将 filtersize 属性设置为 1,1,并将 numfilters 属性设置为新的类数。

  • 通过增加 weightlearnratefactorbiaslearnratefactor 值更改学习率,使新层的学习率快于迁移层的学习率。

  • 删除最后一个 convolution2dlayer,改为连接新层。

    convolution 2-d layer selected in deep network designer. filtersize is set to 1,1 and numfilters is set to 5.

提示

对于大多数预训练网络(例如 googlenet),最后一个可学习层是全连接层。要为迁移学习准备网络,请用一个新的全连接层替换该全连接层,并将 outputsize 属性设置为新的类数量。有关示例,请参阅。

接下来,删除分类输出层。然后,将新的 classificationlayer 拖到画布上并连接它。输出层的默认设置表示网络在训练期间学习的类数量。

classification layer selected in deep network designer. outputsize is set to auto.

通过点击设计器选项卡中的分析,检查您的网络。如果深度学习网络分析器报告零错误,则表示网络已准备就绪,可以开始训练。有关说明如何训练网络以对新图像进行分类的示例,请参阅。

有关理解和编辑层属性的帮助,请点击层名称旁边的帮助图标。

设计器窗格中,选择一个层来查看和编辑属性。点击层名称旁边的帮助图标,了解有关层属性的详细信息。

cross channel normalization layer selected in deep network designer

有关层属性的详细信息,请参阅。

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

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

  1. 设计器选项卡中点击新建

  2. 从工作区上暂停,然后点击导入

  3. 选择 mycustomlayer,然后点击确定

  4. 点击添加

该 app 将自定义层添加到设计器窗格的顶部。要查看新层,请使用鼠标放大或点击放大

设计器窗格中,将 mycustomlayer 连接到网络。有关说明如何在深度网络设计器中使用自定义层构建网络的示例,请参阅。

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

要查看或编辑自定义层类定义,请选择层,然后点击编辑层代码。有关详细信息,请参阅。 (自 r2023a 起)

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

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

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

对象,或者是具有子文件夹(其中包含每个类的图像)的文件夹。类标签源自子文件夹名称。

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

import image data dialog box

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

data tab of deep network designer displaying a histogram of the class labels and a selection of random images from the imported data

其他扩展工作流(如数值特征输入、无法放入内存的数据、图像处理以及音频和语音处理)

数据存储。

对于其他扩展工作流,请使用合适的数据存储对象。例如,、、 (computer vision toolbox)audiodatastore (audio toolbox) 或自定义数据存储。

您可以导入和训练任何能够与 函数配合使用的数据存储对象。有关为深度学习应用构造和使用数据存储对象的详细信息,请参阅。

选择导入数据 > 导入自定义数据

import datastore dialog box

您可以在“导入自定义数据”对话框中指定验证数据。有关详细信息,请参阅。

data tab of deep network designer displaying a preview of the first five observations in the datastore

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

使用深度网络设计器,您可以使用图像数据或能够与 函数配合使用的任何数据存储对象来训练网络。例如,您可以使用 combineddatastore 对象训练语义分割网络或多输入网络。有关将数据导入深度网络设计器的详细信息,请参阅。

要使用导入深度网络设计器中的数据训练网络,请在训练选项卡上,点击训练。该 app 显示训练进度的动画图。该图显示小批量损失和准确度、验证损失和准确度,以及关于训练进度的附加信息。该图右上角有停止按钮 。点击该按钮可停止训练并返回网络的当前状态。

training progress plot in deep network designer

有关详细信息,请参阅。

如果您需要更好地控制训练,请点击训练选项以选择训练设置。有关选择训练选项的详细信息,请参阅 。

training options dialog box in deep network designer

有关如何训练图像分类网络的示例,请参阅。有关如何训练序列到序列 lstm 网络的示例,请参阅。

要使用深度网络设计器不支持的数据训练网络,请选择设计器选项卡,然后点击导出以导出初始网络架构。然后,您可以通过编程方式训练网络,例如,使用自定义训练循环。

将在深度网络设计器中创建的网络架构导出到工作区或 simulink,并生成代码以重新创建网络和训练。

  • 要将具有初始权重的网络架构导出到工作区,请在设计器选项卡上,点击导出。根据网络架构,深度网络设计器会将网络导出为 layergraph lgraph 或 layer 对象 layers。

  • 要将在深度网络设计器中训练的网络导出到工作区,请在训练选项卡上,点击导出。深度网络设计器将经过训练的网络架构导出为 dagnetwork 对象 trainednetwork。深度网络设计器还将训练结果(如训练和验证准确度)导出为结构体数组 traininfostruct。

  • 要将在深度网络设计器中训练的网络导出到 simulink,请在训练选项卡上,点击导出 > 导出到 simulink。深度网络设计器将经过训练的网络保存为 mat 文件,并生成表示经过训练的网络的 simulink 模块。生成的模块取决于训练的网络的类型。

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

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

    • - 使用经过训练的循环神经网络对数据进行分类。

    • - 使用经过训练的循环神经网络预测响应。

有关显示如何将网络从深度网络设计器导出到 simulink 的示例,请参阅。

要重新创建您在深度网络设计器中构造和训练的网络,请生成 matlab 代码。

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

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

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

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

  • 要重新创建在 app 中创建的网络层,请运行脚本。如果您生成了训练脚本,运行该脚本还会复制网络训练。

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

  • 要修改层,请编辑代码。您也可以运行脚本并将网络导回 app 中进行编辑。

有关详细信息,请参阅。

您还可以使用深度网络设计器创建深度学习试验,这些试验会扫描一系列超参数值,或使用贝叶斯优化来找到最佳训练选项。有关如何使用调整在深度网络设计器中训练的网络超参数的示例,请参阅。

相关示例

编程用途

deepnetworkdesigner 打开深度网络设计器。如果深度网络设计器已打开,deepnetworkdesigner 会将焦点放在该 app 上。

deepnetworkdesigner(net) 打开深度网络设计器,并将指定的网络加载到该 app 中。网络可以是串行网络、dag 网络、层图或层数组。

例如,使用预训练的 squeezenet 网络打开深度网络设计器。

net = squeezenet;
deepnetworkdesigner(net);

如果深度网络设计器已打开,deepnetworkdesigner(net) 会将焦点放在该 app 上,并提示您添加或替换任何现有网络。

提示

要训练多个网络并比较结果,请尝试。您可以使用深度网络设计器创建适用于试验管理器的试验。

版本历史记录

在 r2018b 中推出

另请参阅

函数

网站地图