Main Content

experiments.Monitor

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

R2021a 以降

    説明

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

    作成

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

    プロパティ

    すべて展開する

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

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

    データ型: char | string

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

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

    データ型: char | string

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

    試行停止要求。数値もしくは logical 1 (true) または logical 0 (false) で指定します。実験マネージャーのツールストリップまたは結果テーブルで [停止] をクリックすると、このプロパティの値が true になります。

    データ型: logical

    パーセントで表された、学習の進行状況。0 ~ 100 の数値スカラーまたは dlarray オブジェクトとして指定します。

    例: monitor.Progress = 17;

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

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

    例: monitor.XLabel = "Iteration";

    データ型: char | string

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

    例: monitor.Status = "Loading Data";

    データ型: char | string

    R2022b 以降

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

    メトリクス列の値。構造体として指定します。構造体のフィールド名を指定するには、Metrics プロパティを使用します。各フィールドは、関数 recordMetrics によって記録されたカスタム学習ループのステップ値とメトリクス値を含む行列です。

    データ型: struct

    R2022b 以降

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

    情報列の値。構造体として指定します。構造体のフィールド名を指定するには、Info プロパティを使用します。各フィールドは、関数 updateInfo によって更新された値を含む列ベクトルです。

    データ型: struct

    オブジェクト関数

    groupSubPlot実験学習プロットへのメトリクスのグループ化
    recordMetricsRecord metric values in experiment results table and training plot
    updateInfo実験結果テーブルの情報列の更新
    yscaleSet training plot y-axis scale (linear or logarithmic)

    すべて折りたたむ

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

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

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

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

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

    損失に対して対数スケールを指定します。座標軸ツール バーで対数スケール ボタンをクリックして Y 軸のスケールを切り替えることもできます。

    yscale(monitor,"Loss","log")

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

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

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

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

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

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

    ヒント

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

    • experiments.Monitor オブジェクトは、TrainingProgressMonitor オブジェクトと同じプロパティとオブジェクト関数をもちます。そのため、実験マネージャーのセットアップ スクリプトで使用できるように、カスタム学習ループのプロット コードを簡単に適合させることができます。詳細については、Prepare Plotting Code for Custom Training Experimentを参照してください。

    バージョン履歴

    R2021a で導入

    すべて展開する