Main Content

Monitoraggio dei progressi dell’addestramento in Deep Learning

Questo esempio mostra come monitorare i progressi dell'addestramento delle reti di Deep Learning.

Quando si addestrano le reti per il Deep Learning, il plottaggio di varie metriche durante l'addestramento consente di comprendere come progredisce l'addestramento stesso. Ad esempio, è possibile determinare se e quanto velocemente la precisione della rete stia migliorando e se la rete stia iniziando a sovradimensionare i dati di addestramento.

Questo esempio mostra come monitorare i progressi dell’addestramento delle reti addestrate utilizzando la funzione trainnet. Se si sta addestrando una rete utilizzando un loop di addestramento personalizzato, utilizzare invece un oggetto trainingProgressMonitor per tracciare le metriche durante l'addestramento. Per ulteriori informazioni, vedere Monitor Custom Training Loop Progress.

Quando si imposta l'opzione di addestramento Plots su "training-progress" in trainingOptions e si avvia l'addestramento della rete, la funzione trainnet crea una figura e visualizza le metriche di addestramento a ciascuna iterazione. Ogni iterazione è una stima del gradiente e un aggiornamento dei parametri della rete. Se si specificano i dati di convalida in trainingOptions, la figura mostrerà le metriche di convalida ogni volta che trainnet convalida la rete. La figura traccia la perdita e qualsiasi metrica specificata dall'opzione nome-valore Metrics. Per impostazione predefinita, il software utilizza una scala lineare per i grafici. Per specificare una scala logaritmica per l'asse y, selezionare il pulsante scala log nella barra degli strumenti degli assi.

Durante l'addestramento è possibile interromperlo e ripristinare lo stato attuale della rete facendo clic sul pulsante di stop, situato nell'angolo in alto a destra. Dopo aver fatto clic sul pulsante di stop, l'addestramento può richiedere un certo tempo per essere completato. Al termine dell'addestramento, trainnet restituisce la rete addestrata.

Specificare l'opzione di addestramento OutputNetwork come "best-validation" per ottenere valori finalizzati che corrispondano all'iterazione con il miglior valore della metrica di convalida, dove la metrica ottimizzata è specificata dalle opzioni di addestramento ObjectiveMetricName. Specificare l'opzione di addestramento OutputNetwork come "last-iteration" per ottenere metriche finalizzate che corrispondano all'ultima iterazione di addestramento.

Le informazioni relative al tempo di addestramento e alle impostazioni possono essere visualizzate a destra del pannello. Per saperne di più sulle opzioni di addestramento, vedere Set Up Parameters and Train Convolutional Neural Network.

Per salvare il grafico sui progressi dell'addestramento, fare clic su Export as Image (Esporta come immagine) nella finestra di addestramento. È possibile salvare il grafico come file PNG, JPEG, TIFF o PDF. È inoltre possibile salvare i singoli grafici utilizzando la barra degli strumenti degli assi.

Tracciamento dei progressi dell’addestramento durante l’addestramento

Addestrare una rete e tracciare i progressi dell'addestramento durante l’addestramento.

Caricare i dati di addestramento e di test rispettivamente dai file MAT DigitsDataTrain.mat e DigitsDataTest.mat. Gli insiemi di dati di addestramento e di test contengono ciascuno 5000 immagini.

load DigitsDataTrain.mat
load DigitsDataTest.mat

Creare un oggetto dlnetwork.

net = dlnetwork;

Specificare i livelli del ramo di classificazione e aggiungerli alla rete.

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

Specificare le opzioni per l'addestramento della rete. Specificare i dati di convalida per convalidare la rete a intervalli regolari durante l’addestramento. Registrare i valori della metrica per la precisione e l'F-score. Per tracciare i progressi dell'addestramento durante l’addestramento, impostare l'opzione di addestramento Plots su "training-progress".

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

Addestrare la rete.

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

Vedi anche

| |

Argomenti complementari