メインコンテンツ

updateInfo

カスタム学習ループの情報値の更新

R2022b 以降

    説明

    updateInfo(monitor,infoName=infoValue) は、[学習の進行状況] ウィンドウ内の指定された情報を更新し、TrainingProgressMonitor オブジェクト monitorInfoData プロパティにその値を保存します。

    updateInfo(monitor,infoName1=infoValue1,...,infoNameN=infoValueN) は、複数の情報値を更新します。

    updateInfo(monitor,infoStructure) は、構造体 infoStructure で指定された値を使用して情報を更新します。

    すべて折りたたむ

    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.

    構造体を使用して情報値を更新します。

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

    入力引数

    すべて折りたたむ

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

    情報名。string スカラーまたは文字ベクトルとして指定します。この名前は、monitorInfo プロパティの要素でなければなりません。

    データ型: char | string | cell

    情報値。数値スカラー、string スカラー、文字ベクトル、または dlarray オブジェクトとして指定します。

    情報の名前と値。構造体として指定します。名前は、monitorInfo プロパティの要素でなければなりません。構造体内では任意の順序で名前を記述できます。

    例: struct(GradientDecayFactor=gradientDecayFactor,SquaredGradientDecayFactor=squaredGradientDecayFactor)

    データ型: struct

    ヒント

    • 情報値は [学習の進行状況] ウィンドウに表示され、学習プロットにはメトリクス値の記録が表示されます。学習ウィンドウには表示する必要があるものの学習プロットには表示したくないと考えているテキストや数値については、情報値を使用してください。

    バージョン履歴

    R2022b で導入