Überwachen des Deep-Learning-Trainingsfortschritts
Dieses Beispiel zeigt, wie man den Trainingsfortschritt von Deep-Learning-Netzen überwachen kann.
Wenn Sie Deep-Learning-Netze trainieren, können Sie durch das Plotten verschiedener Metriken während des Trainings erfahren, wie das Training voranschreitet. So können Sie beispielsweise feststellen, ob und wie schnell sich die Genauigkeit des Netzes verbessert und ob das Netz beginnt, die Trainingsdaten zu überarbeiten.
Dieses Beispiel zeigt, wie man den Trainingsfortschritt für Netze überwacht, die mit der Funktion trainnet
trainiert wurden. Wenn Sie ein Netz mit einer benutzerdefinierten Trainingsschleife trainieren, verwenden Sie stattdessen ein trainingProgressMonitor
-Objekt, um Metriken während des Trainings zu plotten. Weitere Informationen finden Sie unter Monitor Custom Training Loop Progress.
Wenn Sie die Plots
-Trainingsoption in trainingOptions
auf "training-progress"
setzen und das Netztraining starten, erstellt die Funktion trainnet
eine Abbildung und zeigt bei jeder Iteration Trainingsmetriken an. Jede Iteration ist eine Schätzung des Gradienten und eine Aktualisierung der Netzparameter. Wenn Sie die Validierungsdaten in trainingOptions
angeben, zeigt die Abbildung die Validierungsmetriken jedes Mal, wenn trainnet
das Netz validiert. Die Abbildung zeigt den Verlust und alle durch die Namenswertoption Metrics
angegebenen Metriken. Standardmäßig verwendet die Software eine lineare Skala für die Diagramme. Um eine logarithmische Skala für die y-Achse festzulegen, wählen Sie die Schaltfläche „Logarithmische Skala“ in der Achsen-Symbolleiste.
Während des Trainings können Sie das Training stoppen und den aktuellen Zustand des Netzes wiederherstellen, indem Sie auf die Stopp-Schaltfläche in der oberen rechten Ecke klicken. Nachdem Sie auf die Stopp-Schaltfläche geklickt haben, kann es eine Weile dauern, bis das Training abgeschlossen ist. Sobald das Training abgeschlossen ist, gibt trainnet
das trainierte Netz zurück.
Geben Sie die Trainingsoption OutputNetwork
als "best-validation"
an, um endgültige Werte zu erhalten, die der Iteration mit dem besten Wert der Validierungsmetrik entsprechen, wobei die optimierte Metrik durch die Trainingsoptionen ObjectiveMetricName
angegeben wird. Geben Sie die Trainingsoption OutputNetwork
als "last-iteration"
an, um fertige Metriken zu erhalten, die der letzten Trainingsiteration entsprechen.
Auf der rechten Seite des Fensterbereichs finden Sie Informationen über die Trainingszeit und die Einstellungen. Weitere Informationen über Trainingsoptionen finden Sie unter Set Up Parameters and Train Convolutional Neural Network.
Um den Trainingsverlaufsplan zu speichern, klicken Sie im Trainingsfenster auf Export as Image (Als Bild exportieren). Sie können den Plot als PNG-, JPEG-, TIFF- oder PDF-Datei speichern. Sie können die einzelnen Diagramme auch über die Achsen-Symbolleiste speichern.
Plotten des Trainingsfortschritts während des Trainings
Trainieren Sie ein Netz und zeichnen Sie den Trainingsfortschritt während des Trainings auf.
Laden Sie die Trainings- und Testdaten jeweils aus den MAT-Dateien DigitsDataTrain.mat
und DigitsDataTest
.mat
. Die Trainings- und Testdatensätze enthalten jeweils 5000 Bilder.
load DigitsDataTrain.mat load DigitsDataTest.mat
Erstellen Sie ein dlnetwork
-Objekt.
net = dlnetwork;
Geben Sie die Schichten des Klassifizierungszweigs an und fügen Sie sie dem Netz hinzu.
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);
Geben Sie die Optionen für das Netztraining an. Um das Netz in regelmäßigen Abständen während des Trainings zu validieren, geben Sie Validierungsdaten an. Notieren Sie die metrischen Werte für die Genauigkeit ("Accuracy") und den F-Score. Um den Trainingsfortschritt während des Trainings aufzuzeichnen, setzen Sie die Trainingsoption Plots
auf "training-progress"
.
options = trainingOptions("sgdm", ... MaxEpochs=8, ... Metrics = ["accuracy","fscore"], ... ValidationData={XTest,labelsTest}, ... ValidationFrequency=30, ... Verbose=false, ... Plots="training-progress");
Trainieren Sie das Netz.
net = trainnet(XTrain,labelsTrain,net,"crossentropy",options);
Siehe auch
trainnet
| trainingOptions
| dlnetwork