Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

experiments.Monitor

カスタムの学習実験の結果テーブルと学習プロットの更新

    説明

    実験マネージャーでカスタムの学習実験を実行する場合、experiments.Monitor オブジェクトを使用して、学習の進行状況を追跡し、結果テーブルで情報フィールドを更新し、学習で使用したメトリクスの値を記録し、学習プロットを生成します。カスタムの学習実験の詳細については、Configure Custom Training Experimentを参照してください。

    作成

    カスタムの学習実験を実行すると、実験マネージャーは、実験の各試行について experiments.Monitor オブジェクトを作成します。学習関数の 2 番目の入力引数として、このオブジェクトにアクセスします。

    プロパティ

    すべて展開する

    試行における学習ステータス。string または文字ベクトルとして指定します。

    例: monitor.Status = "Loading Data";

    データ型: char | string

    試行における学習の進行状況。0 ~ 100 の数値スカラーとして指定します。

    例: monitor.Progress = 17;

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi

    情報列の名前。string、文字ベクトル、string 配列として指定するか、文字ベクトルの cell 配列として指定します。名前は文字で始める必要があります。また、文字、数字、アンダースコアを含めることができます。これらの名前は、実験結果テーブルの列ヘッダーに表示されます。情報列の値が学習プロットに表示されることはありません。

    この値は学習関数で 1 回だけ設定することができます。

    例: monitor.Info = ["GradientDecayFactor","SquaredGradientDecayFactor"];

    データ型: char | string

    メトリクス列の名前。string、文字ベクトル、string 配列として指定するか、文字ベクトルの cell 配列として指定します。名前は文字で始める必要があります。また、文字、数字、アンダースコアを含めることができます。これらの名前は、実験結果テーブルの列ヘッダーに表示されます。また、自分自身の学習サブプロットに各メトリクスが表示されます。複数のメトリクスを 1 つのサブプロットにプロットするには、関数 groupSubPlot を使用します。

    この値は学習関数で 1 回だけ設定することができます。

    例: monitor.Metrics = ["TrainingLoss","ValidationLoss"];

    データ型: char | string

    学習プロットの横軸のラベル。string または文字ベクトルとして指定します。

    関数 recordMetrics を呼び出す前に、この値を設定してください。

    例: monitor.XLabel = "Iteration";

    データ型: char | string

    このプロパティは読み取り専用です。

    試行を停止するかどうかのフラグ。数値または論理値として指定し、1 (true) または 0 (false) を指定します。実験マネージャーのツールストリップまたは結果テーブルで [停止] をクリックすると、このプロパティの値が true になります。

    データ型: logical

    オブジェクト関数

    groupSubPlot実験学習プロットへのメトリクスのグループ化
    recordMetricsRecord metric values in experiment results table and training plot
    updateInfo実験結果テーブルの情報列の更新

    すべて折りたたむ

    experiments.Monitor オブジェクトを使用して、学習の進行状況を追跡し、実験結果テーブルで情報とメトリクス値を表示し、カスタムの学習実験の学習プロットを生成します。

    学習を開始する前に、実験マネージャーの結果テーブルの情報列とメトリクス列の名前を指定します。

    monitor.Info = ["GradientDecayFactor","SquaredGradientDecayFactor"];
    monitor.Metrics = ["TrainingLoss","ValidationLoss"];

    学習プロットの横軸のラベルを指定します。同じサブプロット内で、学習損失と検証損失をグループ化します。

    monitor.XLabel = "Iteration";
    groupSubPlot(monitor,"Loss",["TrainingLoss","ValidationLoss"]);

    結果テーブルで、この試行における勾配の減衰係数と 2 乗勾配の減衰係数の値を更新します。

    updateInfo(monitor, ...
        'GradientDecayFactor',gradientDecayFactor, ...
        'SquaredGradientDecayFactor',squaredGradientDecayFactor);

    カスタムの実験ループを実行するたびに、その試行における学習損失と検証損失の値を結果テーブルと学習プロットに記録します。

    recordMetrics(monitor,iteration, ...
        'TrainingLoss',trainingLoss, ...
        'ValidationLoss',validationLoss);

    全体の反復回数に対する完了した試行回数の割合に基づいて、学習の進行状況を更新します。

    monitor.Progress = (iteration/numIterations) * 100;

    ヒント

    • 実験の結果テーブルでは、情報列とメトリクス列の両方に値が表示されます。また、メトリクス値の記録が学習プロットに表示されます。結果テーブルには表示する必要があるものの学習プロットには表示したくないと考えているテキストや数値については、情報列を使用してください。

    R2021a で導入