Main Content

Questa pagina si riferisce alla release precedente. La corrispondente pagina in inglese è stata rimossa nella release attuale.

Creazione di una rete di classificazione di sequenze semplice con Deep Network Designer

Questo esempio mostra come creare una rete long short-term memory di classificazione semplice con l’uso di Deep Network Designer.

Per addestrare una rete neurale profonda alla classificazione di dati sequenziali, si può utilizzare una rete LSTM. Una rete LSTM è un tipo di rete neurale ricorrente (RNN) che apprende le dipendenze a lungo termine tra le fasi temporali dei dati sequenziali.

L’esempio mostra come:

  • Caricare i dati sequenziali.

  • Costruire l’architettura di rete.

  • Specificare le opzioni di addestramento.

  • Addestrare la rete.

  • Predire le etichette per i nuovi dati e calcolare la precisione della classificazione.

Caricamento dei dati

Carica il set di dati Vocali giapponesi, come descritto in [1] e [2]. I predittori sono array di celle contenenti sequenze di lunghezza variabili con una dimensione di feature di 12. Le etichette sono vettori categorici delle etichette 1,2...9.

[XTrain,YTrain] = japaneseVowelsTrainData;
[XValidation,YValidation] = japaneseVowelsTestData;

Visualizza le dimensioni delle prime sequenze di addestramento. Le sequenze sono matrici formate da 12 righe (una riga per ogni feature) e da un numero variabile di colonne (una colonna per ogni fase temporale).

XTrain(1:5)
ans=5×1 cell array
    {12×20 double}
    {12×26 double}
    {12×22 double}
    {12×20 double}
    {12×21 double}

Definizione dell’architettura di rete

Apri Deep Network Designer.

deepNetworkDesigner

Metti in pausa su Sequence-to-Label (Da sequenza a etichetta) e fai clic su Open (Aprire). Si apre così una rete precostruita, indicata per i problemi di classificazione delle sequenze.

Deep Network Designer mostra la rete precostruita.

Si può facilmente adattare questa rete per sequenze al set di dati Vocali giapponesi.

Seleziona sequenceInputLayer e verifica che InputSize sia impostato su 12, in modo che coincida con la dimensione di feature.

Seleziona lstmLayer e imposta NumHiddenUnits su 100.

Seleziona fullyConnectedLayer e verifica che OutputSize sia impostato su 9, il numero di categorie.

Verifica dell’architettura di rete

Per controllare la rete ed esaminare maggiori dettagli dei livelli, fai clic su Analyze (Analizzare).

Esportazione dell’architettura di rete

Per esportare l’architettura di rete nel workspace, nella scheda Designer, fai clic su Export (Esportare). Deep Network Designer salva la rete come variabile layers_1.

Si può anche generare un codice per costruire l’architettura di rete selezionando Export > Generate Code (Esportare > Generare codice).

Addestramento della rete

Specifica le opzioni di addestramento e addestra la rete.

Dato che i mini batch sono piccoli e contengono sequenze brevi, la CPU è più adatta per l’addestramento. Impostare 'ExecutionEnvironment' su 'cpu'. Per eseguire l’addestramento su una GPU, se disponibile, imposta 'ExecutionEnvironment' su 'auto' (il valore predefinito).

miniBatchSize = 27;
options = trainingOptions('adam', ...
    'ExecutionEnvironment','cpu', ...
    'MaxEpochs',100, ...
    'MiniBatchSize',miniBatchSize, ...
    'ValidationData',{XValidation,YValidation}, ...
    'GradientThreshold',2, ...
    'Shuffle','every-epoch', ...
    'Verbose',false, ...
    'Plots','training-progress');

Addestra la rete.

net = trainNetwork(XTrain,YTrain,layers_1,options);

Si può anche addestrare questa rete utilizzando Deep Network Designer e oggetti datastore. Per un esempio su come addestrare una rete con regressione da sequenza a sequenza in Deep Network Designer, vedere Build Time Series Forecasting Network Using Deep Network Designer.

Test della rete

Classifica i dati di test e calcola la precisione della classificazione. Per i mini batch, specifica le stesse dimensioni utilizzate per l’addestramento.

YPred = classify(net,XValidation,'MiniBatchSize',miniBatchSize);
acc = mean(YPred == YValidation)
acc = 0.9405

Per le fasi successive si può provare a migliorare la precisione utilizzando livelli LSTM bidirezionali (BiLSTM) o creando una rete più profonda. Per ulteriori informazioni, vedere Long Short-Term Memory Neural Networks.

Per un esempio su come utilizzare le reti convoluzionali per la classificazione di dati sequenziali, vedere Train Speech Command Recognition Model Using Deep Learning.

Bibliografia

[1] Kudo, Mineichi, Jun Toyama, and Masaru Shimbo. “Multidimensional Curve Classification Using Passing-through Regions.” Pattern Recognition Letters 20, no. 11–13 (novembre 1999): 1103–11. https://doi.org/10.1016/S0167-8655(99)00077-X.

[2] Kudo, Mineichi, Jun Toyama, and Masaru Shimbo. Japanese Vowels Data Set. Distributed by UCI Machine Learning Repository. https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels

Vedi anche

Argomenti complementari