主要内容

实验经理

设计并运行实验来训练和比较深度学习网络

描述

实验经理App可以创建深度学习实验,在多种初始条件下训练网络,并比较结果。例如,您可以使用深度学习实验:

  • 浏览一系列超参数值,或使用贝叶斯优化找到最佳训练选项。贝叶斯优化需要统计和机器学习工具箱™.

  • 使用内置函数trainNetwork或者定义您自己的定制培训功能。

  • 比较使用不同数据集的结果或测试不同的深度网络架构。

为了快速设置您的实验,您可以从一个预先配置好的模板开始。实验模板支持包括图像分类、图像回归、序列分类、语义金宝app分割和自定义训练循环的工作流程。

“实验管理器”提供了可视化工具,如训练图和混淆矩阵、用于优化实验结果的过滤器,以及用于记录观察结果的注释。为了提高再现性,每次运行实验时,“实验管理器”都会存储实验定义的副本。您可以访问过去的实验定义,以跟踪生成每个结果的超参数组合。

“实验管理器”将您的实验和结果组织在项目

  • 您可以在同一个项目中存储多个实验。

  • 每个实验包含一组后果每次你做实验的时候。

  • 每组结果由一个或多个试用对应于不同的超参数组合。

默认情况下,实验管理器每次运行一个试验。如果您有Parallel Computing Toolbox™,您可以将您的实验配置为同时运行多个试验,或者在多个gpu、集群或云上一次运行单个试验。有关更多信息,请参见使用实验管理器并行训练网络

实验的浏览器窗格显示项目中实验和结果的层次结构。例如,这个项目有两个实验,每个实验都有几组结果。

实验浏览器显示两个实验。Experiment1是一个内置的训练实验,有四个结果。Experiment2是一个定制的训练实验,有两个结果。

蓝瓶表示内置的训练实验,使用trainNetwork作用绿色烧杯指示依赖不同训练功能的自定义训练实验。若要打开实验的配置并查看其结果,请双击实验名称或一组结果。

打开实验管理器App

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

  • MATLAB命令提示:输入experimentManager

例子

全部展开

这个例子展示了如何使用实验模板进行图像分类扫描超参数。使用此模板,您可以快速设置内置的训练实验,使用trainNetwork函数。有关使用实验管理器解决图像分类问题的更多示例,请参见创建一个深度学习的分类实验使用实验管理器并行训练网络.有关扫描超参数的替代策略的更多信息,请参见用贝叶斯优化方法调整实验参数

打开这个示例以加载一个带有预先配置的实验的项目,您可以检查并运行这个实验。打开实验,在实验的浏览器窗格中,双击实验的名称(实验1).

或者,您可以按照以下步骤自己配置实验。

1.打开实验管理器。对话框提供指向入门教程和您最近的项目的链接,以及用于创建新项目或打开文档中的示例的按钮。

2.下刚出现的选择项目.一个对话框列出了几个支持工作流的模板,包括图像分类、图像回归、序列分类、语义分割和自金宝app定义训练循环。

3.根据图像分类实验选择基于扫描超参数的图像分类

4.指定新项目的名称和位置。实验经理在项目中打开一个新的实验。的实验窗格显示定义实验的描述、超参数、设置功能和指标。

5.在描述字段,输入实验的描述:

数字分类,使用不同的初始学习速率。

6.下超参数,替换的值myInitialLearnRate0.0025:0.0025:0.015.核实策略被设置为彻底扫除

7.根据设置功能,点击编辑.setup函数在MATLAB编辑器中打开。设置功能指定实验的训练数据、网络架构和训练选项。在本实验中,设置功能分为三个部分。

  • 负荷训练数据定义包含实验的训练和验证数据的图像数据存储。实验使用数字数据集,该数据集由10,000张28 × 28像素的0到9的灰度图像组成,根据它们所代表的数字进行分类。有关此数据集的更多信息,请参见图像数据集

  • 定义网络体系结构定义用于深度学习分类的简单卷积神经网络的体系结构。

  • 指定培训选项定义了一个培训选项实验对象。在本实验中,设置函数将初始学习率的值从myInitialLearnRate超参数表中的项。

当您运行实验时,实验管理器对设置功能定义的网络进行六次训练。每次试验使用超参数表中指定的一个学习率。默认情况下,实验管理器每次运行一个试验。如果您有并行计算工具箱,您可以在同一时间运行多个试验。为了获得最好的结果,在您运行您的实验之前,启动一个与gpu一样多的worker的并行池。有关更多信息,请参见使用实验管理器并行训练网络GPU支金宝app持情况(并行计算工具箱)

  • 要一次运行一次实验,请在实验管理器工具条上单击

  • 要同时进行多个试验,请单击使用并行然后.如果当前没有并行池,实验管理器将使用默认的集群配置文件启动一个。然后,根据可用的并行工作人员的数量,实验管理器执行多个同时的试验。

结果表显示了每次试验的准确性和损失。

在实验运行时,单击训练区显示训练图并跟踪每次试验的进度。您还可以在MATLAB命令窗口中监视训练进度。

点击混淆矩阵显示每个已完成试验中验证数据的混淆矩阵。

实验完成后,您可以使用过滤器窗格。您还可以通过向结果表添加注释来记录观察结果。有关更多信息,请参见对实验结果进行排序、过滤和注释

要测试单个试验的性能,请导出经过培训的网络或试验的培训信息。上实验经理将来发布,选择出口>训练网络出口>培训信息,分别。有关更多信息,请参见信息

要关闭实验,请在实验的浏览器窗格中,右键单击项目名称并选择关闭项目.实验管理器关闭项目中包含的所有实验和结果。

此示例演示如何通过扫描超参数使用实验模板进行图像回归。使用此模板,可以快速设置使用trainNetwork函数。有关使用Experiment Manager解决回归问题的另一个示例,请参见为回归创建一个深度学习实验.有关扫描超参数的替代策略的更多信息,请参见用贝叶斯优化方法调整实验参数

打开这个示例以加载一个带有预先配置的实验的项目,您可以检查并运行这个实验。打开实验,在实验的浏览器窗格中,双击实验的名称(实验1).

或者,您可以按照以下步骤自己配置实验。

1.打开实验管理器。对话框提供指向入门教程和您最近的项目的链接,以及用于创建新项目或打开文档中的示例的按钮。

2.下刚出现的选择项目.一个对话框列出了几个支持工作流的模板,包括图像分类、图像回归、序列分类、语义分割和自金宝app定义训练循环。

3.根据形象回归实验选择扫描超参数图像回归

4.指定新项目的名称和位置。实验经理在项目中打开一个新的实验。的实验窗格显示定义实验的描述、超参数、设置功能和指标。

5.在描述字段,输入实验的描述:

回归预测旋转角度的数字,使用不同的初始学习速率。

6.下超参数,替换的值myInitialLearnRate0.001:0.001:0.006.核实策略被设置为彻底扫除

7.根据设置功能,点击编辑.setup函数在MATLAB编辑器中打开。设置功能指定实验的训练数据、网络架构和训练选项。在本实验中,设置功能分为三个部分。

  • 负荷训练数据将实验的训练和验证数据定义为4-D阵列。训练和验证数据分别由来自Digits数据集的5000张图像组成。每个图像显示一个从0到9的数字,旋转了一定的角度。回归值对应于旋转角度。有关此数据集的更多信息,请参见图像数据集

  • 定义网络体系结构定义用于深度学习回归的简单卷积神经网络的体系结构。

  • 指定培训选项定义了一个培训选项实验对象。在本实验中,设置函数将初始学习率的值从myInitialLearnRate超参数表中的项。

当您运行实验时,实验管理器对设置功能定义的网络进行六次训练。每次试验使用超参数表中指定的一个学习率。默认情况下,实验管理器每次运行一个试验。如果您有并行计算工具箱,您可以在同一时间运行多个试验。为了获得最好的结果,在您运行您的实验之前,启动一个与gpu一样多的worker的并行池。有关更多信息,请参见使用实验管理器并行训练网络GPU支金宝app持情况(并行计算工具箱)

  • 要一次运行一次实验,请在实验管理器工具条上单击

  • 要同时进行多个试验,请单击使用并行然后.如果当前没有并行池,实验管理器将使用默认的集群配置文件启动一个。然后,根据可用的并行工作人员的数量,实验管理器执行多个同时的试验。

结果表显示了每次试验的均方根误差(RMSE)和损失。

在实验运行时,单击训练区显示训练图并跟踪每次试验的进度。您还可以在MATLAB命令窗口中监视训练进度。

实验完成后,您可以使用过滤器窗格。您还可以通过向结果表添加注释来记录观察结果。有关更多信息,请参见对实验结果进行排序、过滤和注释

要测试单个试验的性能,请导出经过培训的网络或试验的培训信息。上实验经理将来发布,选择出口>训练网络出口>培训信息,分别。有关更多信息,请参见信息

要关闭实验,请在实验的浏览器窗格中,右键单击项目名称并选择关闭项目.实验管理器关闭项目中包含的所有实验和结果。

这个例子展示了如何使用自定义训练循环来使用图像分类的训练实验模板。使用此模板,您可以快速设置自定义训练实验。

打开这个示例以加载一个带有预先配置的实验的项目,您可以检查并运行这个实验。打开实验,在实验的浏览器窗格中,双击实验的名称(实验1).

或者,您可以按照以下步骤自己配置实验。

1.打开实验管理器。对话框提供指向入门教程和您最近的项目的链接,以及用于创建新项目或打开文档中的示例的按钮。

2.下刚出现的选择项目.一个对话框列出了几个支持工作流的模板,包括图像分类、图像回归、序列分类、语义分割和自金宝app定义训练循环。

3.根据图像分类实验选择基于自定义训练循环的图像分类

4.选择新项目的位置和名称。实验经理在项目中打开一个新的实验。的实验窗格显示定义实验的描述、超参数和训练函数。

3.在描述字段,输入实验的描述:

数字分类,使用不同的初始学习速率。

4.下超参数,替换的值myInitialLearnRate0.0025:0.0025:0.015.核实策略被设置为彻底扫除

5.下培训职能,点击编辑。培训功能在MATLAB编辑器中打开。培训功能指定了实验使用的培训数据、网络架构、培训选项和培训程序。在本实验中,培训功能分为四个部分。

  • 负荷训练数据将实验的训练数据定义为4-D阵列。实验使用数字数据集,该数据集由5000张28 × 28像素的0到9的灰度图像组成,根据它们所代表的数字进行分类。有关此数据集的更多信息,请参见图像数据集

  • 定义网络体系结构定义用于深度学习分类的简单卷积神经网络的体系结构。要使用自定义训练循环训练网络,训练函数将网络表示为dlnetwork对象

  • 指定培训选项定义实验使用的训练选项。在本实验中,训练函数将初始学习率的值从myInitialLearnRate超参数表中的项。

  • 列车模型定义实验使用的自定义训练循环。对于每个历元,自定义训练循环洗牌数据并迭代小批量数据。对于每个小批量,自定义训练循环评估模型梯度、状态和损失,确定基于时间的衰减学习率计划的学习率,并更新网络rk参数。为了跟踪培训进度并记录培训损失值,培训功能使用实验。监控对象监控

当您运行实验时,实验管理器对训练函数定义的网络进行六次训练。每次试验使用超参数表中指定的一个学习率。默认情况下,实验管理器每次运行一个试验。如果您有并行计算工具箱,您可以在同一时间运行多个试验。为了获得最好的结果,在您运行您的实验之前,启动一个与gpu一样多的worker的并行池。有关更多信息,请参见使用实验管理器并行训练网络GPU支金宝app持情况(并行计算工具箱)

  • 要一次运行一次实验,请在实验管理器工具条上单击

  • 要同时进行多个试验,请单击使用并行然后.如果当前没有并行池,实验管理器将使用默认的集群配置文件启动一个。然后,根据可用的并行工作人员的数量,实验管理器执行多个同时的试验。

结果表显示了每次试验的训练损失。

在实验运行时,单击训练区展示训练图,并跟踪每次试验的进度。

实验完成后,您可以使用过滤器窗格。您还可以通过向结果表添加注释来记录观察结果。有关更多信息,请参见对实验结果进行排序、过滤和注释

为了测试个别试验的性能,输出试验的训练输出。在实验经理将来发布,选择出口. 在本实验中,训练输出是一个包含训练损失值和训练网络值的结构。

要关闭实验,请在实验的浏览器窗格中,右键单击项目名称并选择关闭项目.实验管理器关闭项目中包含的所有实验和结果。

此示例演示如何使用“实验管理器”应用程序设置内置训练实验。内置训练实验依赖于trainNetwork功能和支持工作流程,如图像金宝app分类,图像回归,序列分类,语义分割。

内置训练实验包括描述、超参数表、设置函数和用于评估实验结果的度量函数集合。

描述字段,输入实验的描述。

超参数,选择用于实验的策略。

  • 要扫描一系列超参数值,请设置策略彻底扫除。在超参数表中,指定实验中使用的超参数值。您可以将超参数值指定为标量或带有数字、逻辑或字符串值的向量。例如,这些是有效的超参数规范:

    • 0.01

    • 0.01:0.01:0.05

    • [0.01 0.02 0.04 0.08]

    • ["个" rmsprop”“亚当”)

    当您运行实验时,experiment Manager使用表中指定的超参数值的每个组合来训练网络。

  • 用贝叶斯优化方法寻找最优的训练方案,集合策略贝叶斯优化。在超参数表中,指定实验中使用的超参数的以下属性:

    • 范围-输入一个给出实值或整值超参数下界和上界的双元素向量,或一个列出分类超参数可能值的字符串数组或单元格数组。

    • 类型-挑选真实的(实值hyperparameter),整数(整数值hyperparameter),或分类(分类hyperparameter)。

    • 使改变-挑选没有一个(没有变换)日志(对数变换)。对于日志,超参数必须为真实的整数和积极的。使用此选项,超参数将在对数尺度上搜索和建模。

    运行实验时,“实验管理器”会搜索超参数的最佳组合。实验中的每个试验都会根据以前试验的结果使用新的超参数值组合。

    要指定实验的持续时间,请在下贝叶斯优化选项,输入最大运行时间(以秒为单位)和最大运行次数。请注意,您的实验中的实际运行时间和试验次数可能超过这些设置,因为实验管理器只在试验执行完成时检查这些选项。

    贝叶斯优化需要统计和机器学习工具箱。有关详细信息,请参阅用贝叶斯优化方法调整实验参数

设置功能配置实验的培训数据、网络体系结构和培训选项。设置函数的输入是一个结构,其中包含hyperparameter表中的字段。设置功能的输出必须与trainNetwork函数。该表列出了setup函数支持的签名。金宝app

实验的目标 设置函数签名
使用指定的图像和响应训练网络进行图像分类和回归任务图片以及由选项
作用(图像、层选项)= Experiment_setup (params)...结束
使用指定的图像训练网络图片以及由反应
作用(图像、反应层、期权)= Experiment_setup (params)...结束
使用指定的序列和响应训练网络进行序列或时间序列分类和回归任务(例如,LSTM或GRU网络)序列
作用[序列、层、选项]=实验设置(参数)...结束
使用以下命令指定的顺序训练网络:序列以及由反应
作用(序列,它、层、期权)= Experiment_setup (params)...结束
训练网络进行特征分类或回归任务(例如,多层感知器,或MLP,网络)使用特征数据和响应指定特征
作用[特性、层选项]= Experiment_setup (params)...结束
使用指定的特征数据训练网络特征以及由反应
作用(特性、反应层、期权)= Experiment_setup (params)...结束

请注意

设置“训练”选项时,“实验管理器”不支持并行执行多个试验金宝appExecutionEnvironment“multi-gpu”“平行”或者在启用“培训”选项时DispatchInBackground.只有当你打算一次只做一个实验时,才可以使用这些选项来加速训练。有关更多信息,请参见使用实验管理器并行训练网络

指标节指定用于评估实验结果的函数。度量函数的输入是一个有三个字段的结构:

度量函数的输出必须是标量数、逻辑值或字符串。

如果您的实验使用贝叶斯优化,选择一个指标进行优化优化列表。在方向列表中,指定要最大化最小化这个指标。实验管理器使用这个度量来确定实验超参数的最佳组合。您可以从表中选择一个标准的训练或验证度量(例如准确性、RMSE或损失)或自定义度量。

这个例子展示了如何使用实验管理器应用程序设置一个自定义的训练实验。自定义训练实验支持的工作流程需要一个训练功能以外的金宝apptrainNetwork.这些工作流程包括:

  • 训练不由层图定义的网络。

  • 使用自定义学习速率计划训练网络。

  • 使用自定义函数更新网络的可学习参数。

  • 训练生成式对抗网络(GAN)。

  • 训练一个暹罗网络。

自定义训练实验由描述、超参数表和训练函数组成。

描述字段,输入实验的描述。

超参数,选择用于实验的策略。

  • 要扫描一系列超参数值,请设置策略彻底扫除。在超参数表中,指定实验中使用的超参数值。您可以将超参数值指定为标量或带有数字、逻辑或字符串值的向量。例如,这些是有效的超参数规范:

    • 0.01

    • 0.01:0.01:0.05

    • [0.01 0.02 0.04 0.08]

    • ["个" rmsprop”“亚当”)

    当您运行实验时,experiment Manager使用表中指定的超参数值的每个组合来训练网络。

  • 用贝叶斯优化方法寻找最优的训练方案,集合策略贝叶斯优化。在超参数表中,指定实验中使用的超参数的以下属性:

    • 范围-输入一个给出实值或整值超参数下界和上界的双元素向量,或一个列出分类超参数可能值的字符串数组或单元格数组。

    • 类型-挑选真实的(实值hyperparameter),整数(整数值hyperparameter),或分类(分类hyperparameter)。

    • 使改变-挑选没有一个(没有变换)日志(对数变换)。对于日志,超参数必须为真实的整数和积极的。使用此选项,超参数将在对数尺度上搜索和建模。

    运行实验时,“实验管理器”会搜索超参数的最佳组合。实验中的每个试验都会根据以前试验的结果使用新的超参数值组合。

    要指定实验的持续时间,请在下贝叶斯优化选项,输入最大运行时间(以秒为单位)和最大运行次数。请注意,您的实验中的实际运行时间和试验次数可能超过这些设置,因为实验管理器只在试验执行完成时检查这些选项。

    贝叶斯优化需要统计和机器学习工具箱。有关详细信息,请参阅在定制训练实验中使用贝叶斯优化

培训职能指定实验使用的训练数据、网络体系结构、训练选项和训练过程。培训功能的输入为:

  • 具有超参数表中的字段的结构

  • 一个实验。监控对象,可用于跟踪培训进度、更新结果表中的信息字段、记录培训使用的度量值以及生成培训图

实验管理器保存了训练函数的输出,可以在训练完成后导出到MATLAB工作空间。

请注意

信息列和度量列都显示实验结果表中的数值。此外,在训练图中记录度量值。使用信息列表示希望在结果表中显示但不在训练图中显示的值。

如果你的实验使用贝叶斯优化,在指标第节,下优化,输入要优化的度量的名称。在方向列表中,指定要最大化最小化这个指标。实验管理器使用这个度量来确定实验超参数的最佳组合。你可以选择你定义的任何指标实验。监控对象为训练函数。

实验管理器提供了两种中断实验的选项:

  • 停止将任何正在运行的测试标记为停止并保存他们的结果。当实验停止时,可以显示训练图并导出这些试验的训练输出。

  • 取消将任何正在运行的测试标记为取消了当实验停止时,您无法显示训练图或导出这些试验的训练输出。

这两个选项都保存任何已完成试验的结果,并取消任何排队试验。通常情况下,取消快于停止

您可以停止正在运行的单个试验或取消单个排队试验,而不是停止一个试验。在进步在结果表的列中,单击停止按钮或取消按钮的审判。

结果表显示正在运行的试验的停止图标。

培训完成后,您可以重新启动已停止或取消的试验。在进步列,单击Restart按钮的审判。

显示正在运行的试验的重启图标的结果表。

或者,要重新启动您取消的所有试验,请在“试验管理器”工具栏中单击重启都取消了

请注意

使用贝叶斯优化的实验只支持金宝app取消选择。此外,这些实验不支持重新启动被取消的试验。金宝app

使用穷举扫描的自定义训练实验仅支持金宝app停止选择。

这个例子展示了如何在运行一个实验后比较你的结果并记录你的观察结果。

当您运行一个实验时,实验管理器会对设置功能定义的网络进行多次训练。每次试验都使用不同的超参数组合。当实验结束时,一个表格显示每个试验的训练和验证指标(如准确性、RMSE和损失)。要比较试验结果,可以使用这些指标对结果表进行排序并过滤试验结果。

要对结果表中的试验进行排序,请使用对应于训练或验证指标的下拉菜单。

  1. 指向要按其排序的列的标题。

  2. 点击三角形图标。

  3. 选择升序排序按降序排序

    显示验证精度列下拉菜单的结果表。

要从结果表中过滤试验,请使用过滤器窗格。

  1. 实验经理将来发布,选择过滤器

    过滤器窗格显示结果表中数字指标的直方图。将直方图从过滤器窗格中,打开对应列的下拉菜单并清除显示过滤器复选框。

  2. 调整直方图下方的滑块,以确定要过滤的训练或验证指标。

    验证精度的直方图,过滤器滑块设置为62和64.88。

    结果表只显示了在选定范围内具有度量值的试验。

    结果表仅显示验证准确度大于62的试验。

  3. 若要恢复结果表中的所有试验,请关闭实验结果窗格中重新打开结果实验的浏览器窗格。

要记录对实验结果的观察,请添加注释。

  1. 右键单击结果表中的单元格并选择添加注释。或者,在结果表中选择一个单元格,然后在“实验管理器”工具栏上选择注释>添加注释

    结果表显示具有最大值的验证精度单元格的下拉菜单。

  2. 注释窗格,在文本框中输入您的观察结果。

    注释文字上写着,“迄今为止最好的准确性。训练更长的时间来提高这个价值。”

    可以为结果表中的每个单元格添加多个批注。每个批注都用时间戳标记。

  3. 要高亮显示与注释相对应的单元格,请单击注释上方的链接。

打开注释窗格并查看您的所有注释,在实验管理器工具条上,选择注释>看注释

此示例演示如何检查产生给定结果的实验的配置。

在你做了一个实验之后,你可以打开实验源窗格,以查看实验说明和超参数表的只读副本,以及到该实验使用的所有函数的链接。您可以使用此窗格中的信息来跟踪生成每个结果的数据、网络和培训选项的配置。

例如,假设您多次运行一个实验。每次运行实验时,都要更改setup函数的内容,但始终使用相同的函数名。第一次运行实验时,使用实验模板提供的默认网络进行图像分类。第二次运行实验时,修改setup函数以加载预先训练好的GoogLeNet网络,用迁移学习的新层替换最后的层。有关使用这两种网络体系结构的示例,请参见创建一个深度学习的分类实验

在第一次实验结果窗格中,单击查看实验源链接。实验经理打开实验源窗格,其中包含生成第一组结果的实验定义。单击窗格底部的链接,打开第一次运行实验时使用的设置函数。您可以复制这个设置函数,使用简单的分类网络重新运行实验。

在第二个实验结果窗格中,单击查看实验源链接。实验经理打开实验源窗格,其中包含生成第二组结果的实验定义。单击窗格底部的链接打开第二次运行实验时使用的设置函数。您可以复制此设置函数以使用转移学习重新运行实验。

“实验管理器”存储您使用的所有函数的副本,因此在修改和重新运行实验时不必手动重命名这些函数。

相关的例子

提示

介绍了R2020a