Main Content

Surveiller la progression de l'apprentissage du Deep Learning

Cet exemple montre comment surveiller la progression de l’apprentissage des réseaux de Deep Learning.

Lorsque vous entraînez des réseaux pour le Deep Learning, le tracé de diverses métriques pendant l’apprentissage vous permet de suivre la progression de celui-ci. Par exemple, vous pouvez déterminer si la précision du réseau s’améliore et dans quelle mesure, et si le réseau commence à provoquer un surajustement des données d’apprentissage.

Cet exemple montre comment surveiller la progression de l’apprentissage pour des réseaux entraînés avec la fonction trainnet. Si vous entraînez un réseau avec une boucle d’apprentissage personnalisée, utilisez plutôt un objet trainingProgressMonitor pour tracer les métriques pendant l’apprentissage. Pour plus d’informations, veuillez consulter Monitor Custom Training Loop Progress.

Lorsque vous définissez l’option d’apprentissage Plots à "training-progress" dans trainingOptions et commencez l’apprentissage d’un réseau, la fonction trainnet crée une figure et affiche les métriques à chaque itération. Chaque itération est une estimation du gradient et une mise à jour des paramètres du réseau. Si vous spécifiez des données de validation dans trainingOptions, la figure montre les métriques de validation chaque fois que trainnet valide le réseau. La figure trace la perte et toutes les métriques spécifiées par l’option de type nom-valeur Metrics. Par défaut, le software utilise une échelle linéaire pour les tracés. Pour spécifier une échelle logarithmique pour l’axe des ordonnées, sélectionnez le bouton correspondant dans la barre d’outils des axes.

Pendant l’apprentissage, vous pouvez arrêter l’apprentissage et revenir à l’état actuel du réseau en cliquant sur le bouton dans le coin supérieur droit. Une fois que vous avez cliqué sur le bouton d’arrêt, l’apprentissage peut prendre un certain temps pour s’achever. Une fois l’apprentissage terminé, trainnet renvoie le réseau entraîné.

Définissez l’option d’apprentissage OutputNetwork à "best-validation" pour obtenir des valeurs finalisées correspondant à l’itération avec la meilleure valeur de métrique de validation, où la métrique optimisée est spécifiée par les options d’apprentissage ObjectiveMetricName. Définissez l’option d’apprentissage OutputNetwork à "last-iteration" pour obtenir des métriques finalisées correspondant à la dernière itération de l’apprentissage.

Des informations sur le temps et les paramètres d’apprentissage s’affichent à droite du volet. Pour en savoir plus sur les options d’apprentissage, veuillez consulter Set Up Parameters and Train Convolutional Neural Network.

Pour enregistrer le tracé de la progression de l’apprentissage, cliquez sur Export as Image dans la fenêtre d’apprentissage. Vous pouvez enregistrer le tracé en tant que fichier PNG, JPEG, TIFF ou PDF. Vous pouvez également enregistrer les tracés individuels avec la barre d’outils des axes.

Tracer la progression de l’apprentissage pendant l’apprentissage

Entraînez un réseau et tracez la progression de l’apprentissage pendant l’apprentissage.

Chargez respectivement les données d’apprentissage et de test à partir des fichiers MAT DigitsDataTrain.mat et DigitsDataTest.mat. Les jeux de données d’apprentissage et de test contiennent 5 000 images chacun.

load DigitsDataTrain.mat
load DigitsDataTest.mat

Créez un objet dlnetwork.

net = dlnetwork;

Spécifiez les couches de la branche de classification et ajoutez-les au réseau.

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

Spécifiez les options pour l’apprentissage du réseau. Pour valider le réseau à intervalles réguliers pendant l’apprentissage, spécifiez les données de validation. Enregistrez les valeurs des métriques de précision et de F-score. Pour tracer la progression de l’apprentissage pendant l’apprentissage, définissez l’option d’apprentissage Plots à "training-progress".

options = trainingOptions("sgdm", ...
    MaxEpochs=8, ...
    Metrics = ["accuracy","fscore"], ...
    ValidationData={XTest,labelsTest}, ...
    ValidationFrequency=30, ...
    Verbose=false, ...
    Plots="training-progress");

Entraînez le réseau.

net = trainnet(XTrain,labelsTrain,net,"crossentropy",options);

Voir aussi

| |

Sujets associés