メインコンテンツ

groupSubPlot

学習プロットへのメトリクスのグループ化

R2022b 以降

    説明

    groupSubPlot(monitor,groupName,metricNames) は、指定されたメトリクスを y 軸ラベルが groupName である 1 つの学習サブプロットにグループ化します。既定では、ソフトウェアはグループ化されていない各メトリクスを自分自身の学習サブプロットにプロットします。

    メトリクスをグループ化するには、メトリクスの Y 軸のスケールがすべて同じでなければなりません。詳細については、yscale を参照してください。

    すべて折りたたむ

    TrainingProgressMonitor オブジェクトを使用して、学習の進行状況を追跡し、カスタム学習ループの学習プロットを生成します。

    TrainingProgressMonitor オブジェクトを作成します。モニターによって、開始時間と経過時間が自動的に追跡されます。オブジェクトを作成するとタイマーが開始されます。

    ヒント

    経過時間が学習時間を正確に反映するようにするには、必ずカスタム学習ループの先頭に近いところで TrainingProgressMonitor オブジェクトを作成してください。

    monitor = trainingProgressMonitor;

    学習を開始する前に、情報値とメトリクス値の名前を指定します。

    monitor.Info = ["LearningRate","Epoch","Iteration"];
    monitor.Metrics = ["TrainingLoss","ValidationLoss","TrainingAccuracy","ValidationAccuracy"];

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

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

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

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

    学習時には、次のことが行われます。

    • カスタム学習ループの各ステップの開始時に Stop プロパティが評価されます。[学習の進行状況] ウィンドウで [停止] ボタンをクリックすると、Stop プロパティが 1 に変わります。Stop プロパティが 1 のとき、学習ループが終了すると学習が停止します。

    • 情報値が更新されます。更新された値は [学習の進行状況] ウィンドウに表示されます。

    • メトリクス値が記録されます。記録された値は学習プロットに表示されます。

    • 反復が完了した割合に基づいて、学習の進行率が更新されます。

    メモ

    次のサンプル コードはテンプレートです。メトリクス値と情報値を計算するには、この学習ループを編集しなければなりません。MATLAB で実行できる完全な例については、Monitor Custom Training Loop Progress During Trainingを参照してください。

    epoch = 0;
    iteration = 0;
    
    monitor.Status = "Running";
    
    while epoch < maxEpochs && ~monitor.Stop
        epoch = epoch + 1;
    
        while hasData(mbq) && ~monitor.Stop
            iteration = iteration + 1;
    
            % Add code to calculate metric and information values.
            % lossTrain = ...
    
           updateInfo(monitor, ...
                LearningRate=learnRate, ...
                Epoch=string(epoch) + " of " + string(maxEpochs), ...
                Iteration=string(iteration) + " of " + string(numIterations));
    
           recordMetrics(monitor,iteration, ...
                TrainingLoss=lossTrain, ...
                TrainingAccuracy=accuracyTrain, ...
                ValidationLoss=lossValidation, ...
                ValidationAccuracy=accuracyValidation);
    
            monitor.Progress = 100*iteration/numIterations;
        end
    end

    [学習の進行状況] ウィンドウには、メトリクスのアニメーション プロット、情報値、学習の進行状況バー、経過時間が表示されます。

    • 学習プロットは、recordMetrics を呼び出すたびに更新されます。

    • [情報] の下の値は、updateInfo を呼び出すたびに更新されます。

    • 経過時間は、recordMetrics または updateInfo を呼び出すたび、および Progress プロパティを更新するたびに更新されます。

    Training Progress window. The first plot shows the training and validation loss and the second plot shows the training and validation accuracy.

    入力引数

    すべて折りたたむ

    学習の進行状況モニター。TrainingProgressMonitor オブジェクトとして指定します。

    サブプロット グループの名前。string スカラーまたは文字ベクトルとして指定します。ソフトウェアは、指定されたメトリクスを y 軸ラベルが groupName である 1 つの学習サブプロットにグループ化します。

    データ型: char | string

    メトリクス名。string スカラー、文字ベクトル、string 配列として指定するか、文字ベクトルの cell 配列として指定します。各メトリクス名は、monitorMetrics プロパティの要素でなければならず、1 つのサブプロットにのみ表示できます。

    データ型: char | string | cell

    バージョン履歴

    R2022b で導入