主要内容

实验。监控

更新自定义训练实验的结果表和训练图

    描述

    在运行自定义训练实验时实验管理器,使用实验。监控对象用于跟踪训练的进度、更新结果表中的信息字段、记录训练使用的度量值以及生成训练图。有关自定义训练实验的更多信息,请参见配置自定义训练实验

    创建

    运行自定义训练实验时,实验管理器会创建一个实验。监控对象为你的实验的每一个试验。作为训练函数的第二个输入参数访问该对象。

    或者,要调试自定义训练实验,请调用实验。监控函数来创建一个对象,您可以使用它来运行MATLAB中的训练函数®命令窗口。有关更多信息,请参见深度学习的调试实验

    描述

    例子

    监控=实验。监控创建一个实验。监控对象,可用于诊断训练函数中的问题。

    属性

    全部展开

    度量列名,指定为字符串、字符向量、字符串数组或字符向量的单元格数组。有效名称以字母开头,可以包含字母、数字和下划线。这些名称在实验结果表中以列标题的形式出现。此外,每个指标都出现在自己的训练子图中。若要在单个子图中绘制多个指标,请使用该函数groupSubPlot

    例子:班长。指标= ["TrainingLoss","ValidationLoss"];

    数据类型:字符|字符串

    信息列名,指定为字符串、字符向量、字符串数组或字符向量的单元格数组。有效名称以字母开头,可以包含字母、数字和下划线。这些名称在实验结果表中以列标题的形式出现。信息列中的值不会出现在训练图中。

    例子:班长。信息= [“GradientDecayFactor”,“SquaredGradientDecayFactor”];

    数据类型:字符|字符串

    此属性是只读的。

    请求停止试验,指定为数字或逻辑1 (真正的)或0 ().此属性的值变为真正的当你点击停止在“实验管理器”工具条或结果表中。

    数据类型:逻辑

    训练进度百分比,指定为数字标量或dlarray0到100之间的对象。

    例子:班长。进步= 17;

    训练图中的水平轴标签,指定为字符串或字符向量。

    在调用函数之前设置这个值recordMetrics

    例子:班长。包含=“迭代”;

    数据类型:字符|字符串

    试验的训练状态,指定为字符串或字符向量。

    例子:班长。状态= "Loading Data";

    数据类型:字符|字符串

    此属性是只读的。

    作为结构指定的度量列值。使用指标属性指定结构的字段名。每个字段都是一个矩阵,包含自定义训练循环步长值和度量值recordMetrics函数。

    数据类型:结构体

    此属性是只读的。

    信息列值,指定为结构。使用信息属性指定结构的字段名。类更新的值,每个字段都是一个列向量updateInfo函数。

    数据类型:结构体

    对象的功能

    groupSubPlot 实验训练图中的分组指标
    recordMetrics 将测量值记录在实验结果表和训练图中
    updateInfo 更新实验结果表信息列

    例子

    全部折叠

    使用一个实验。监控对象用于跟踪训练进度,在实验结果表中显示信息和度量值,并为自定义训练实验生成训练图。

    在开始训练之前,指定experimental Manager结果表的信息和度量列的名称。

    班长。信息= [“GradientDecayFactor”“SquaredGradientDecayFactor”];班长。指标= [“TrainingLoss”“ValidationLoss”];

    指定训练图的水平轴标签。将训练损失和验证损失分组在同一子图中。

    班长。包含=“迭代”;groupSubPlot(监控,“损失”,[“TrainingLoss”“ValidationLoss”]);

    更新结果表中试验的梯度衰减因子和平方梯度衰减因子的值。

    updateInfo(监控,...GradientDecayFactor = GradientDecayFactor,...SquaredGradientDecayFactor = SquaredGradientDecayFactor);

    在每次自定义训练循环迭代后,在结果表和训练图中记录试验的训练和验证损失值。

    recordMetrics(监控、迭代...TrainingLoss = TrainingLoss,...ValidationLoss = ValidationLoss);

    根据完成迭代的百分比更新试验的训练进度。

    班长。进步= 100 * (iteration/numIterations);

    若要调试自定义训练实验,请打开训练函数并按中所述设置断点设置断点.然后在MATLAB命令窗口中调用训练函数。

    为实验中定义的每个超参数创建一个具有字段的结构。为对应的超参数指定的范围内的每个字段赋值。例如,如果你的实验有两个超参数WeightsInitializer而且BiasInitializer,输入如下。

    params = struct(WeightsInitializer=“他”...BiasInitializer =“narrow-normal”);

    创建一个实验。监控对象。

    monitor =实验;

    调用训练函数,使用超参数结构和实验。监控对象作为函数的输入。例如,如果你的训练函数被调用ImageComparisonExperiment_training1,输入如下。

    net = ImageComparisonExperiment_training1(params,monitor);

    MATLAB在由断点指示的每一行代码处暂停。当函数在断点处停止执行时,您可以查看变量的值,逐行执行代码,或继续执行下一个断点。有关更多信息,请参见深度学习的调试实验

    提示

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

    • 一个实验。监控对象具有与对象相同的属性和对象函数TrainingProgressMonitor对象。因此,您可以轻松地调整自定义训练循环绘图代码以用于实验管理器设置脚本。有关更多信息,请参见为定制训练实验准备绘图代码

    版本历史

    R2021a中引入

    全部展开