メインコンテンツ

yscale

学習プロットの y 軸のスケール (線形または対数) の設定

R2024a 以降

    説明

    yscale(monitor,axesName,scale) は、axesName で指定された座標軸の y 軸のスケールを線形または対数として指定します。scale"linear" または "log" として指定します。

    メモ

    y 軸のスケールを切り替えるには、座標軸ツール バーで対数スケール ボタンをクリックします。

    Axes toolbar with a button to turn on log scale for the y-axis.

    すべて折りたたむ

    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 で実行できる完全な例については、学習中のカスタム学習ループの進行状況の監視を参照してください。

    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.

    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);

    入力引数

    すべて折りたたむ

    メトリクス モニター。TrainingProgressMonitor オブジェクトまたは experiments.Monitor オブジェクトとして指定します。

    プロットの座標軸の名前。string または文字配列として指定します。座標軸の名前はメトリクスの名前と一致しなければなりません。groupSubPlot 関数を使用してメトリクスをグループ化する場合、axesName はグループの名前でなければなりません。

    データ型: char | string

    座標軸のスケール。次のいずれかの値として指定します。

    説明
    "linear"

    線形スケール

    Axis with the scale set to "linear". The tick values that start at 0 and increment by adding 100 to the previous value.

    "log"

    対数スケール

    メモ

    対数スケールを指定すると、場合によっては、座標軸から座標が除外されることがあります。

    • 座標に正の値と負の値が含まれている場合は、正の値のみが表示されます。

    • 座標がすべて負である場合、値はすべて適切な符号が付けられた対数スケールで表示されます。

    • ゼロの値は表示されません。

    Axis with the scale set to "log". The tick values start at 1 (10 raised to 0). Each major tick value increases by a factor of 10.

    バージョン履歴

    R2024a で導入