Main Content

Ü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

| |

Verwandte Themen