Group metrics in training plot
Track Progress and Produce Training Plots
TrainingProgressMonitor object to track training progress and produce training plots for custom training loops.
TrainingProgressMonitor object. The monitor automatically tracks the start time and the elapsed time. The timer starts when you create the object.
To ensure that the elapsed time accurately reflects the training time, make sure you create the
TrainingProgressMonitor object close to the start of your custom training loop.
monitor = trainingProgressMonitor;
Before you start the training, specify names for the information and metric values.
monitor.Info = ["LearningRate","Epoch","Iteration"]; monitor.Metrics = ["TrainingLoss","ValidationLoss","TrainingAccuracy","ValidationAccuracy"];
Specify the horizontal axis label for the training plot. Group the training and validation loss in the same subplot, and group the training and validation accuracy in the same plot.
monitor.XLabel = "Iteration"; groupSubPlot(monitor,"Loss",["TrainingLoss","ValidationLoss"]); groupSubPlot(monitor,"Accuracy",["TrainingAccuracy","ValidationAccuracy"]);
Stopproperty at the start of each step in your custom training loop. When you click the Stop button in the Training Progress window, the
Stopproperty changes to
1. Training stops if your training loop exits when the
Update the information values. The updated values appear in the Training Progress window.
Record the metric values. The recorded values appear in the training plot.
Update the training progress percentage based on the fraction of iterations completed.
The following example code is a template. You must edit this training loop to compute your metric and information values. For a complete example that you can run in MATLAB, see 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
The Training Progress window shows animated plots of the metrics, and the information values, training progress bar, and elapsed time.
monitor — Training progress monitor
Training progress monitor, specified as a
groupName — Name of subplot group
string scalar | character vector
Name of the subplot group, specified as a string scalar or character vector. The
software groups the specified metrics in a single training subplot with the
metricNames — Metric names
string scalar | character vector | string array | cell array of character vectors
Introduced in R2022b