主要内容

使用度量函数评估深度学习实验

这个例子展示了如何使用度量函数来评估一个实验的结果。默认情况下,当你运行一个内置的训练实验时,实验管理器计算您的实验中每个试验的损失、准确性(用于分类实验)和均方根误差(用于回归实验)。要计算其他度量,请创建您自己的度量函数。例如,你可以定义度量函数:

  • 测试训练网络的预测性能。

  • 通过计算最后阶段验证损失的斜率来评估训练进度。

  • 显示在使用不同的网络架构的实验中使用的网络的大小为每个试验。

当每次试用结束培训,实验经理评估指标功能,并显示其值在结果表中。

在这个例子中,我们训练一个网络来对手写数字图像进行分类。两个度量函数决定了训练后的网络如何识别数字1和7的图像。有关使用实验管理器训练网络进行图像分类的更多信息,请参见图像分类扫描超参数

定义度量函数

在内置的训练实验中添加一个度量函数。

1.在实验窗格中,在指标,点击添加

2.在增加指标对话框,输入指标函数的名称并单击好吧.如果您输入项目中已经存在的函数的名称,实验管理器将其添加到实验中。否则,实验管理器将创建一个由默认模板定义的函数。

3.选择度量函数的名称并单击编辑.度量函数在MATLAB®编辑器中打开。

指标函数的输入是一个带有三个字段的结构:

  • trainedNetworkSeriesNetwork对象或DAGNetwork对象返回的trainNetwork函数。有关更多信息,请参见

  • trainingInfo是返回的包含培训信息的结构trainNetwork函数。有关更多信息,请参见信息

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

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

开放实验

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

内置的训练实验包括一个描述、一个超参数表、一个设置函数和一组度量函数来评估实验的结果。有关更多信息,请参见内置训练实验配置

描述字段包含实验的文本描述。对于本例,描述如下:

数字分类,通过使用度量函数评估结果:—OnesAsSevens返回错误分类为7s的1的百分比。—SevensAsOnes返回7s误分类为1的百分比。

Hyperparameters节指定策略(详尽的扫描)和实验使用的超参数值。当您运行实验时,实验管理器使用超参数表中指定的每一个超参数值组合来训练网络。本例中使用超级参数InitialLearnRate动力

设置函数配置实验的训练数据、网络架构和训练选项。检查设置功能,在设置函数,点击编辑.设置函数在MATLAB编辑器中打开。

在这个例子中,setup函数有三个部分。

  • 负荷训练数据定义包含培训和验证数据的图像数据存储。这个例子从Digits数据集中加载图像。有关此数据集的更多信息,请参见图像数据集

  • 定义网络体系结构定义用于深度学习分类的卷积神经网络的体系结构。本例使用setup函数模板提供的默认分类网络。

  • 指定培训选项定义了一个trainingOptions实验对象。该示例加载培训选项的值“InitialLearnRate”“动量”从超参数表。

指标节指定评估实验结果的可选函数。实验管理器每次完成网络训练后都会对这些功能进行评估。要检查度量函数,请选择度量函数的名称并单击编辑.度量函数在MATLAB编辑器中打开。

这个例子包括两个度量函数。

  • OnesAsSevens返回经过训练的网络误将数字1分类为7的图像的百分比。

  • SevensAsOnes返回经过训练的网络误分类为1的数字7的图像的百分比。

这些函数都使用经过训练的网络来对整个Digits数据集进行分类。然后,这些函数确定实际标签和预测标签不一致的图像数量。例如,函数OnesAsSevens计算具有实际标签的图像数量' 1 '以及一个预测的标签“7”

函数metricOutput = SevensAsOnes (trialInfo)
actualValue =“7”;predValue =' 1 ';
网= trialInfo.trainedNetwork;
digitDatasetPath = fullfile (matlabroot,“工具箱”“nnet”...“nndemos”“nndatasets”“DigitDataset”);imd = imageDatastore (digitDatasetPath,...“IncludeSubfolders”,真的,...“LabelSource”“foldernames”);
YActual = imds.Labels;YPred =分类(净、imd);
K = sum(YActual == actualValue & YPred == predValue);N = sum(YActual ==实际值);
metricOutput = 100 * K / N;
结束

同样地,函数SevensAsOnes计算具有实际标签的图像数量“7”以及一个预测的标签' 1 '

运行实验

当您运行实验时,实验管理器训练由设置函数定义的网络六次。每次试验都使用不同的超参数值组合。默认情况下,实验管理器每次运行一个试验。如果您有Parallel Computing Toolbox™,您可以同时运行多个试验。为了获得最佳结果,在运行实验之前,请启动一个具有与gpu相同数量的worker的并行池。有关更多信息,请参见使用实验管理器并行训练网络GPU支金宝app持版本(并行计算工具箱)

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

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

结果表显示了每一次试验的度量函数值。

评估结果

为了找到你的实验的最佳结果,对结果表进行分类。例如,找到错误分类次数最少的试验。

  1. 指出OnesAsSevens列。

  2. 点击三角形图标。

  3. 选择按升序排序

类似地,通过打开下拉菜单找到错误分类7个数最小的试验SevensAsOnes列和选择按升序排序

如果没有一个试验同时最小化两个度量函数,考虑优先考虑对每个度量都排名好的试验。例如,在这些结果中,对于每个度量函数,试验6具有第二小的值。

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

  1. 在结果表中,右键单击OnesAsSevens细胞的最佳试验。

  2. 选择添加注释

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

  4. 控件重复前面的步骤SevensAsOnes细胞。

有关更多信息,请参见排序,过滤和注释实验结果

关闭实验

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

另请参阅

应用程序

功能

相关的话题