Update information values for custom training loops
updates multiple information values.
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.
Specify Information Values by Using Structure
Use a structure to update the information values.
structure.GradientDecayFactor = gradientDecayFactor; structure.SquaredGradientDecayFactor = squaredGradientDecayFactor; updateInfo(monitor,structure);
monitor — Training progress monitor
Training progress monitor, specified as a
infoValue — Information value
numeric scalar | string scalar | character vector |
Information value, specified as a numeric scalar, string scalar, character vector,
infoStructure — Information names and values
The information values appear in the Training Progress window and the training plot shows a record of the metric values. Use information values for text and for numerical values that you want to display in the training window but not in the training plot.
Introduced in R2022b