Monitor Deep Learning Training Progress
This example shows how to monitor the training progress of deep learning networks.
When you train networks for deep learning, plotting various metrics during training enables you to learn how the training is progressing. For example, you can determine if and how quickly the network accuracy is improving, and whether the network is starting to overfit the training data.
This example shows how to monitor training progress for networks trained using the trainnet
function. If you are training a network using a custom training loop, use a trainingProgressMonitor
object instead to plot metrics during training. For more information, see Monitor Custom Training Loop Progress.
When you set the Plots
training option to "training-progress"
in trainingOptions
and start network training, the trainnet
function creates a figure and displays training metrics at every iteration. Each iteration is an estimation of the gradient and an update of the network parameters. If you specify validation data in trainingOptions
, then the figure shows validation metrics each time trainnet
validates the network. The figure plots the loss and any metrics specified by the Metrics
name-value option. By default, the software uses a linear scale for the plots. To specify a logarithmic scale for the y-axis, select the log scale button in the axes toolbar.
During training, you can stop training and return the current state of the network by clicking the stop button in the top-right corner. After you click the stop button, it can take a while for training to complete. Once training is complete, trainnet
returns the trained network.
Specify the OutputNetwork
training option as "best-validation"
to get finalized values that correspond to the iteration with the best validation metric value, where the optimized metric is specified by the ObjectiveMetricName
training options. Specify the OutputNetwork
training option as "last-iteration"
to get finalized metrics that correspond to the last training iteration.
On the right of the pane, view information about the training time and settings. To learn more about training options, see Set Up Parameters and Train Convolutional Neural Network.
To save the training progress plot, click Export as Image in the training window. You can save the plot as a PNG, JPEG, TIFF, or PDF file. You can also save the individual plots using the axes toolbar.
Plot Training Progress During Training
Train a network and plot the training progress during training.
Load the training and test data from the MAT files DigitsDataTrain.mat
and DigitsDataTest
.mat
, respectively. The training and test data sets each contain 5000 images.
load DigitsDataTrain.mat load DigitsDataTest.mat
Create a dlnetwork
object.
net = dlnetwork;
Specify the layers of the classification branch and add them to the network.
layers = [ imageInputLayer([28 28 1]) convolution2dLayer(3,8,Padding="same") batchNormalizationLayer reluLayer maxPooling2dLayer(2,Stride=2) convolution2dLayer(3,16,Padding="same") batchNormalizationLayer reluLayer maxPooling2dLayer(2,Stride=2) convolution2dLayer(3,32,Padding="same") batchNormalizationLayer reluLayer fullyConnectedLayer(10) softmaxLayer]; net = addLayers(net,layers);
Specify options for network training. To validate the network at regular intervals during training, specify validation data. Record the metric values for the accuracy and F-score. To plot training progress during training, set the Plots
training option to "training-progress"
.
options = trainingOptions("sgdm", ... MaxEpochs=8, ... Metrics = ["accuracy","fscore"], ... ValidationData={XTest,labelsTest}, ... ValidationFrequency=30, ... Verbose=false, ... Plots="training-progress");
Train the network.
net = trainnet(XTrain,labelsTrain,net,"crossentropy",options);
See Also
trainnet
| trainingOptions
| dlnetwork