Contenuto principale

trainNetwork

Addestramento di reti neurali (non consigliato)

trainNetwork non è consigliata. Utilizzare invece la funzione trainnet. Per ulteriori informazioni, vedere Storico della versione.

Descrizione

net = trainNetwork(images,layers,options) addestra la rete neurale specificata da layers per le attività di classificazione e regressione delle immagini utilizzando le immagini e le risposte specificate da images e le opzioni di addestramento definite da options.

net = trainNetwork(images,responses,layers,options) si addestra utilizzando le immagini specificate da images e le risposte specificate da responses.

net = trainNetwork(sequences,layers,options) addestra una rete neurale per le attività di classificazione e regressione sequenziali o di serie temporali (ad esempio, una rete neurale LSTM o GRU) utilizzando le sequenze e le risposte specificate da sequences.

net = trainNetwork(sequences,responses,layers,options) si addestra utilizzando le sequenze specificate da sequences e le risposte specificate da responses.

esempio

net = trainNetwork(features,layers,options) addestra una rete neurale per le attività di classificazione o regressione delle feature (ad esempio, una rete neurale multilayer perceptron (MLP)) utilizzando i dati delle feature e le risposte specificate da features.

net = trainNetwork(features,responses,layers,options) si addestra utilizzando i dati delle feature specificati da features e le risposte specificate da responses.

net = trainNetwork(mixed,layers,options) addestra una rete neurale con più input e tipi di dati misti con i dati e le risposte specificati da mixed.

[net,info] = trainNetwork(___) restituisce inoltre informazioni sull'addestramento utilizzando una qualsiasi delle sintassi precedenti.

Esempi

comprimi tutto

Addestrare una rete LSTM di Deep Learning per la classificazione da sequenza a etichetta.

Caricare i dati di esempio da WaveformData.mat. I dati sono un array di sequenze di celle numObservations per 1, dove numObservations è il numero delle sequenze. Ciascuna sequenza è un array numerico numChannels per -numTimeSteps, dove numChannels è il numero di canali della sequenza e numTimeSteps è il numero di fasi temporali della sequenza.

load WaveformData

Visualizzare alcune delle sequenze in un grafico.

numChannels = size(data{1},1);

idx = [3 4 5 12];
figure
tiledlayout(2,2)
for i = 1:4
    nexttile
    stackedplot(data{idx(i)}', ...
        DisplayLabels="Channel " + string(1:numChannels))
    
    xlabel("Time Step")
    title("Class: " + string(labels(idx(i))))
end

Accantonare i dati per i test. Suddividere i dati in un set di addestramento contenente il 90% dei dati e un set di test contenente il restante 10% dei dati. Per suddividere i dati, utilizzare la funzione trainingPartitions, allegata a questo esempio come file di supporto. Per accedere a questo file, aprire l'esempio come script live.

numObservations = numel(data);
[idxTrain,idxTest] = trainingPartitions(numObservations, [0.9 0.1]);
XTrain = data(idxTrain);
TTrain = labels(idxTrain);

XTest = data(idxTest);
TTest = labels(idxTest);

Definire l’architettura di rete LSTM. Specificare la grandezza dell'input come numero di canali dei dati di input. Specificare un livello LSTM che abbia 120 unità nascoste e che produca l'ultimo elemento della sequenza. Infine, includere un livello completamente connesso con una grandezza di output corrispondente al numero di classi, seguito da un livello softmax e da un livello di classificazione.

numHiddenUnits = 120;
numClasses = numel(categories(TTrain));

layers = [ ...
    sequenceInputLayer(numChannels)
    lstmLayer(numHiddenUnits,OutputMode="last")
    fullyConnectedLayer(numClasses)
    softmaxLayer
    classificationLayer]
layers = 
  5×1 Layer array with layers:

     1   ''   Sequence Input          Sequence input with 3 dimensions
     2   ''   LSTM                    LSTM with 120 hidden units
     3   ''   Fully Connected         4 fully connected layer
     4   ''   Softmax                 softmax
     5   ''   Classification Output   crossentropyex

Specificare le opzioni di addestramento. Addestrare utilizzando il solver Adam con una velocità di apprendimento di 0,01 e una soglia del gradiente pari a 1. Impostare il numero massimo di epoche a 150 e mescolare a ciascuna epoca. Per impostazione predefinita, il software si addestra su una GPU, se disponibile. L'utilizzo di una GPU richiede Parallel Computing Toolbox™ e un dispositivo GPU supportato. Per informazioni sui dispositivi supportati, vedere GPU Computing Requirements (Parallel Computing Toolbox).

options = trainingOptions("adam", ...
    MaxEpochs=150, ...
    InitialLearnRate=0.01,...
    Shuffle="every-epoch", ...
    GradientThreshold=1, ...
    Verbose=false, ...
    Plots="training-progress");

Addestrare la rete LSTM con le opzioni di addestramento specificate.

net = trainNetwork(XTrain,TTrain,layers,options);

Classificare i dati di test. Specificare la stessa grandezza del mini-batch utilizzato per l'addestramento.

YTest = classify(net,XTest);

Calcolare la precisione della classificazione delle previsioni.

acc = mean(YTest == TTest)
acc = 0.8400

Visualizzare i risultati della classificazione in un grafico di confusione.

figure
confusionchart(TTest,YTest)

Argomenti di input

comprimi tutto

Dati dell'immagine, specificati come uno dei seguenti modi:

Tipo di datiDescrizioneEsempi di utilizzo
DatastoreImageDatastoreDatastore di immagini salvate su disco.

Addestrare la rete neurale di classificazione delle immagini con immagini salvate su disco, quando le immagini hanno la stessa grandezza.

Quando le immagini hanno grandezza diversa, utilizzare un oggetto AugmentedImageDatastore.

Gli oggetti ImageDatastore supportano solo attività di classificazione delle immagini. Per utilizzare i datastore di immagini per le reti neurali di regressione, creare un datastore trasformato o combinato che contenga le immagini e le risposte utilizzando rispettivamente le funzioni transform e combine.

AugmentedImageDatastoreDatastore che applica trasformazioni geometriche affini casuali, tra cui il ridimensionamento, la rotazione, la riflessione, il taglio e la traslazione.

  • Addestrare la rete neurale di classificazione delle immagini con immagini salvate su disco, quando le immagini hanno grandezze diversa.

  • Addestrare la rete neurale di classificazione delle immagini e generare nuovi dati utilizzando gli incrementi.

TransformedDatastoreDatastore che trasforma batch di dati letti da un datastore sottostante utilizzando una funzione di trasformazione personalizzata.

  • Addestrare la rete neurale di regressione delle immagini.

  • Addestrare reti neurali con più input.

  • Trasformare i datastore con output non supportati da trainNetwork.

  • Applicare trasformazioni personalizzate all'output del datastore.

CombinedDatastoreDatastore che legge da due o più datastore sottostanti.

  • Addestrare la rete neurale di regressione delle immagini.

  • Addestrare reti neurali con più input.

  • Combinare predittori e risposte provenienti da diverse sorgenti di dati.

RandomPatchExtractionDatastore (Image Processing Toolbox)Datastore che estrae coppie di patch casuali dalle immagini o dalle immagini con etichette dei pixel e, opzionalmente, applica alle coppie identiche trasformazioni geometriche affini casuali.Addestrare la rete neurale per il rilevamento degli oggetti.
DenoisingImageDatastore (Image Processing Toolbox)Datastore che applica un rumore gaussiano generato in modo casuale.Addestrare la rete neurale per la riduzione del rumore nelle immagini.
Datastore personalizzato di mini-batchDatastore personalizzato che restituisce mini-batch di dati.

Addestrare la rete neurale utilizzando dati in un formato non supportato da altri datastore.

Per i dettagli, vedere Develop Custom Mini-Batch Datastore.

Array numericoImmagini specificate come array numerico. Se si specificano le immagini come array numerico, è inoltre necessario specificare l'argomento responses.Addestrare la rete neurale utilizzando dati che si adattano alla memoria e non richiedono elaborazioni aggiuntive come l'incremento.
TabellaImmagini specificate come tabella. Se si specificano le immagini come tabella, è inoltre possibile specificare quali colonne contengono le risposte utilizzando l'argomento responses.Addestrare la rete neurale utilizzando i dati memorizzati in una tabella.

Per le reti neurali con più input, il datastore deve essere un oggetto TransformedDatastore o CombinedDatastore.

Suggerimento

Per le sequenze di immagini, ad esempio i dati video, utilizzare l'argomento di input sequences.

Datastore

I datastore leggono mini-batch di immagini e risposte. I datastore sono più indicati quando si hanno dati che non si adattano alla memoria o quando si desidera applicare degli incrementi o delle trasformazioni ai dati.

Il seguente elenco riporta i datastore direttamente compatibili con trainNetwork per i dati delle immagini.

Ad esempio, è possibile creare un datastore di immagini utilizzando la funzione imageDatastore e utilizzare i nomi delle cartelle contenenti le immagini come etichette impostando l'opzione 'LabelSource' su 'foldernames'. In alternativa, è possibile specificare manualmente le etichette utilizzando la proprietà Labels del datastore di immagini.

Suggerimento

Utilizzare augmentedImageDatastore per pre-elaborare le immagini per il Deep Learning in modo efficiente, compreso il ridimensionamento delle immagini. Non utilizzare l'opzione ReadFcn degli oggetti ImageDatastore.

ImageDatastore consente la lettura di batch di file immagine JPG o PNG utilizzando il prefetch. Se si imposta l'opzione ReadFcn su una funzione personalizzata, ImageDatastore non esegue il prefetch ed è di solito significativamente più lento.

È possibile utilizzare altri datastore integrati per l'addestramento delle reti neurali di Deep Learning utilizzando le funzioni transform e combine. Queste funzioni possono convertire i dati letti dai datastore nel formato richiesto da trainNetwork.

Per le reti neurali con più input, il datastore deve essere un oggetto TransformedDatastore o CombinedDatastore.

Il formato richiesto per l'output del datastore dipende dall'architettura della rete neurale.

Architettura della rete neuraleOutput del datastoreEsempio di output
Singolo livello di input

Tabella o array di celle con due colonne.

La prima e la seconda colonna specificano rispettivamente i predittori e i target.

Gli elementi della tabella devono essere scalari, vettori riga o array di celle 1x1 contenenti un array numerico.

I mini-batch personalizzati del datastore devono produrre tabelle.

Tabella per la rete neurale con un input e un output:

data = read(ds)
data =

  4×2 table

        Predictors        Response
    __________________    ________

    {224×224×3 double}       2    
    {224×224×3 double}       7    
    {224×224×3 double}       9    
    {224×224×3 double}       9  

Array di celle per la rete neurale con un input e un output:

data = read(ds)
data =

  4×2 cell array

    {224×224×3 double}    {[2]}
    {224×224×3 double}    {[7]}
    {224×224×3 double}    {[9]}
    {224×224×3 double}    {[9]}

Livelli multipli di input

Array di celle con colonne (numInputs + 1), dove numInputs è il numero di input della rete neurale.

Le prime colonne numInputs specificano i predittori per ogni input e l'ultima colonna specifica i target.

L'ordine degli input è dato dalla proprietà InputNames del grafo dei livelli layers.

Array di celle per la rete neurale con due input e un output.

data = read(ds)
data =

  4×3 cell array

    {224×224×3 double}    {128×128×3 double}    {[2]}
    {224×224×3 double}    {128×128×3 double}    {[2]}
    {224×224×3 double}    {128×128×3 double}    {[9]}
    {224×224×3 double}    {128×128×3 double}    {[9]}

Il formato dei predittori dipende dal tipo di dati.

DatiFormato
Immagini bidimensionali

Array numerico h x w x c, dove h, w e c sono rispettivamente l'altezza, la larghezza e il numero di canali delle immagini.

Immagini tridimensionaliArray numerico h x w x d x c, dove h, w, d e c sono rispettivamente l'altezza, la larghezza, la profondità e il numero di canali delle immagini.

Per i predittori restituiti in tabelle, gli elementi devono contenere uno scalare numerico, un vettore riga numerico o un array di celle 1x1 contenente l'array numerico.

Il formato delle risposte dipende dal tipo di attività.

AttivitàFormato della risposta
Classificazione dell’immagineScalare categorico
Regressione dell'immagine
  • Scalare numerico

  • Vettore numerico

  • Array numerico tridimensionale che rappresenta un'immagine bidimensionale

  • Array numerico quadrimensionale che rappresenta un'immagine tridimensionale

Per le risposte restituite in tabelle, gli elementi devono essere uno scalare categorico, uno scalare numerico, un vettore riga numerico o un array di celle 1x1 contenente un array numerico.

Per ulteriori informazioni, vedere Datastores for Deep Learning.

Array numerico

Per i dati che si adattano alla memoria e non richiedono elaborazioni aggiuntive come l'incremento, è possibile specificare un set di dati delle immagini come array numerico. Se si specificano le immagini come array numerico, è inoltre necessario specificare l'argomento responses.

La grandezza e la forma dell'array numerico dipendono dal tipo di dati dell'immagine.

DatiFormato
Immagini bidimensionali

Array numerico h x w x c x N, dove h, w e c sono rispettivamente l’altezza, la larghezza e il numero di canali delle immagini e N è il numero di immagini.

Immagini tridimensionaliArray numerico h x w x d x c x N, dove h, w, d e c sono rispettivamente l'altezza, la larghezza, la profondità e il numero di canali delle immagini e N è il numero di immagini.

Tabella

In alternativa ai datastore o agli array numerici, è anche possibile specificare le immagini e le risposte in una tabella. Se si specificano le immagini come tabella, è inoltre possibile specificare quali colonne contengono le risposte utilizzando l'argomento responses.

Quando si specificano le immagini e le risposte in una tabella, ciascuna riga della tabella corrisponde a un'osservazione.

Per l'input delle immagini, i predittori devono trovarsi nella prima colonna della tabella, specificata in uno dei seguenti modi:

  • Percorso di file assoluto o relativo a un'immagine, specificato come vettore di carattere

  • Array di celle 1x1 contenente un array numerico h x w x c che rappresenta un'immagine bidimensionale, dove h, w e c corrispondono rispettivamente all'altezza, alla larghezza e al numero di canali dell'immagine.

Il formato delle risposte dipende dal tipo di attività.

AttivitàFormato della risposta
Classificazione dell’immagineScalare categorico
Regressione dell'immagine
  • Scalare numerico

  • Due o più colonne di valori scalari

  • Array di celle 1x1 contenente un array numerico h x w x c che rappresenta un'immagine bidimensionale

  • Array di celle 1x1 contenente un array numerico h x w x d x c che rappresenta un'immagine tridimensionale

Per le reti neurali con input di immagini, se responses non viene specificata, per impostazione predefinita, la funzione utilizza tbl per i predittori e le colonne successive come risposte.

Suggerimento

  • Se i predittori o le risposte contengono NaN, questi vengono propagati nella rete neurale durante l'addestramento. In questi casi, l'addestramento di solito non riesce a convergere.

  • Per le attività di regressione, la normalizzazione delle risposte spesso aiuta a stabilizzare e velocizzare l'addestramento delle reti neurali per la regressione. Per ulteriori informazioni, vedere Addestramento della rete neurale convoluzionale per la regressione.

  • Questo argomento supporta i predittori a valore complesso. Per addestrare una rete con predittori a valore complesso utilizzando la funzione trainNetwork, l'opzione SplitComplexInputs del livello di input deve essere 1 (true).

Dati sequenziali o di serie temporali, specificati come uno dei seguenti modi:

Tipo di datiDescrizioneEsempi di utilizzo
DatastoreTransformedDatastoreDatastore che trasforma batch di dati letti da un datastore sottostante utilizzando una funzione di trasformazione personalizzata.

  • Trasformare i datastore con output non supportati da trainNetwork.

  • Applicare trasformazioni personalizzate all'output del datastore.

CombinedDatastoreDatastore che legge da due o più datastore sottostanti.

Combinare predittori e risposte provenienti da diverse sorgenti di dati.

Datastore personalizzato di mini-batchDatastore personalizzato che restituisce mini-batch di dati.

Addestrare la rete neurale utilizzando dati in un formato non supportato da altri datastore.

Per i dettagli, vedere Develop Custom Mini-Batch Datastore.

Array numerico o array di celleUna singola sequenza specificata come array numerico o un set di dati sequenziali specificato come array di celle di array numerici. Se si specificano le sequenze come array numerici o array di celle, è inoltre necessario specificare l'argomento responses.Addestrare la rete neurale utilizzando dati che si adattano alla memoria e non richiedono elaborazioni aggiuntive come trasformazioni personalizzate.

Datastore

I datastore leggono mini-batch di sequenze e risposte. I datastore sono più indicati quando si hanno dati che non si adattano alla memoria o quando si desidera applicare delle trasformazioni ai dati.

Il seguente elenco riporta i datastore direttamente compatibili con trainNetwork per i dati sequenziali.

È possibile utilizzare altri datastore integrati per l'addestramento delle reti neurali di Deep Learning utilizzando le funzioni transform e combine. Queste funzioni possono convertire i dati letti dai datastore nel formato tabella o array di celle richiesto da trainNetwork. Ad esempio, è possibile trasformare e combinare i dati letti da array in memoria e file CSV utilizzando rispettivamente gli oggetti ArrayDatastore e TabularTextDatastore.

Il datastore deve restituire i dati in una tabella o array di celle. I mini-batch personalizzati del datastore devono produrre tabelle.

Output del datastoreEsempio di output
Tabella
data = read(ds)
data =

  4×2 table

        Predictors        Response
    __________________    ________

    {12×50 double}           2    
    {12×50 double}           7    
    {12×50 double}           9    
    {12×50 double}           9  
Array di celle
data = read(ds)
data =

  4×2 cell array

    {12×50 double}        {[2]}
    {12×50 double}        {[7]}
    {12×50 double}        {[9]}
    {12×50 double}        {[9]}

Il formato dei predittori dipende dal tipo di dati.

DatiFormato dei predittori
Sequenza di vettori

Matrice c x s, dove c è il numero di feature della sequenza e s è la lunghezza della sequenza.

Sequenza di immagini monodimensionale

Array h x c x s, dove h e c corrispondono rispettivamente all'altezza e al numero di canali dell'immagine e s è la lunghezza della sequenza.

Ciascuna sequenza del mini-batch deve avere la stessa lunghezza di sequenza.

Sequenza di immagini bidimensionale

Array h x w x c x s, dove h, w e c corrispondono rispettivamente all'altezza, alla larghezza e al numero di canali dell'immagine e s è la lunghezza della sequenza.

Ciascuna sequenza del mini-batch deve avere la stessa lunghezza di sequenza.

Sequenza di immagini tridimensionale

Array h x w x d x c x s, dove h, w, d e c corrispondono rispettivamente all'altezza, alla larghezza, alla profondità e al numero di canali dell'immagine e s è la lunghezza della sequenza.

Ciascuna sequenza del mini-batch deve avere la stessa lunghezza di sequenza.

Per i predittori restituiti in tabelle, gli elementi devono contenere uno scalare numerico, un vettore riga numerico o un array di celle 1x1 contenente un array numerico.

Il formato delle risposte dipende dal tipo di attività.

AttivitàFormato delle risposte
Classificazione da sequenza a etichettaScalare categorico
Regressione da sequenza a singolo

Scalare

Regressione da sequenza a vettore

Vettore riga numerico

Classificazione da sequenza a sequenza

  • Sequenza di etichette categoriche 1 x s, dove s è la lunghezza della sequenza del predittore corrispondente.

  • Sequenza di etichette categoriche h x w x s, dove h, w e s sono rispettivamente l'altezza, la larghezza e la lunghezza della sequenza del predittore corrispondente.

  • Sequenza di etichette categoriche h x w x d x s, dove h, w, d e s sono rispettivamente l'altezza, la larghezza, la profondità e la lunghezza della sequenza del predittore corrispondente.

Ciascuna sequenza del mini-batch deve avere la stessa lunghezza di sequenza.

Regressione da sequenza a sequenza
  • Matrice R x s, dove R è il numero di risposte e s è la lunghezza della sequenza del predittore corrispondente.

  • Sequenza di risposte numeriche h x w x R x s, dove R è il numero di risposte e h, w e s sono rispettivamente l'altezza, la larghezza e la lunghezza della sequenza del predittore corrispondente.

  • Sequenza di risposte numeriche h x w x d x R x s, dove R è il numero di risposte e h, w, d, e s sono rispettivamente l'altezza, la larghezza, la profondità e la lunghezza della sequenza del predittore corrispondente.

Ciascuna sequenza del mini-batch deve avere la stessa lunghezza di sequenza.

Per le risposte restituite in tabelle, gli elementi devono essere uno scalare categorico, uno scalare numerico, un vettore riga numerico o un array di celle 1x1 contenente un array numerico.

Per ulteriori informazioni, vedere Datastores for Deep Learning.

Array numerico o array di celle

Per i dati che si adattano alla memoria e non richiedono elaborazioni aggiuntive come le trasformazioni personalizzate, è possibile specificare una singola sequenza come array numerico o un set di dati sequenziali come array di celle di array numerici. Se si specificano le sequenze come array di celle o array numerici, è inoltre necessario specificare l'argomento responses.

Per l'input di un array di celle, l'array di celle deve essere un array di celle N x 1 di array numerici, dove N è il numero di osservazioni. La grandezza e la forma dell'array numerico che rappresenta una sequenza dipende dal tipo di dati sequenziali.

InputDescrizione
Sequenze di vettoriMatrici c x s, dove c è il numero di feature delle sequenze e s è la lunghezza della sequenza.
Sequenze di immagini monodimensionaliArray h x c x s, dove h e c corrispondono rispettivamente all'altezza e al numero di canali delle immagini e s è la lunghezza della sequenza.
Sequenze di immagini bidimensionaliArray h x w x c x s, dove h, w e c corrispondono rispettivamente all'altezza, alla larghezza e al numero di canali delle immagini e s è la lunghezza della sequenza.
Sequenze di immagini tridimensionalih x w x d x c x s, dove h, w, d e c corrispondono rispettivamente all'altezza, alla larghezza, alla profondità e al numero di canali delle immagini tridimensionali e s è la lunghezza della sequenza.

La funzione trainNetwork supporta le reti neurali con al massimo un livello di input di sequenza.

Suggerimento

  • Se i predittori o le risposte contengono NaN, questi vengono propagati nella rete neurale durante l'addestramento. In questi casi, l'addestramento di solito non riesce a convergere.

  • Per le attività di regressione, la normalizzazione delle risposte spesso aiuta a stabilizzare e velocizzare l'addestramento. Per ulteriori informazioni, vedere Addestramento della rete neurale convoluzionale per la regressione.

  • Questo argomento supporta i predittori a valore complesso. Per addestrare una rete con predittori a valore complesso utilizzando la funzione trainNetwork, l'opzione SplitComplexInputs del livello di input deve essere 1 (true).

Dati delle feature, specificati come uno dei seguenti modi:

Tipo di datiDescrizioneEsempi di utilizzo
DatastoreTransformedDatastoreDatastore che trasforma batch di dati letti da un datastore sottostante utilizzando una funzione di trasformazione personalizzata.

  • Addestrare reti neurali con più input.

  • Trasformare i datastore con output non supportati da trainNetwork.

  • Applicare trasformazioni personalizzate all'output del datastore.

CombinedDatastoreDatastore che legge da due o più datastore sottostanti.

  • Addestrare reti neurali con più input.

  • Combinare predittori e risposte provenienti da diverse sorgenti di dati.

Datastore personalizzato di mini-batchDatastore personalizzato che restituisce mini-batch di dati.

Addestrare la rete neurale utilizzando dati in un formato non supportato da altri datastore.

Per i dettagli, vedere Develop Custom Mini-Batch Datastore.

TabellaDati delle feature, specificati come tabella. Se si specificano le feature come tabella, è inoltre possibile specificare quali colonne contengono le risposte utilizzando l'argomento responses.Addestrare la rete neurale utilizzando i dati memorizzati in una tabella.
Array numericoDati delle feature, specificati come array numerico. Se si specificano le feature come array numerico, è inoltre necessario specificare l'argomento responses.Addestrare la rete neurale utilizzando dati che si adattano alla memoria e non richiedono elaborazioni aggiuntive come trasformazioni personalizzate.

Datastore

I datastore leggono mini-batch di dati delle feature e delle risposte. I datastore sono più indicati quando si hanno dati che non si adattano alla memoria o quando si desidera applicare delle trasformazioni ai dati.

Il seguente elenco riporta i datastore direttamente compatibili con trainNetwork per i dati delle feature.

È possibile utilizzare altri datastore integrati per l'addestramento delle reti neurali di Deep Learning utilizzando le funzioni transform e combine. Queste funzioni possono convertire i dati letti dai datastore nel formato tabella o array di celle richiesto da trainNetwork. Per ulteriori informazioni, vedere Datastores for Deep Learning.

Per le reti neurali con più input, il datastore deve essere un oggetto TransformedDatastore o CombinedDatastore.

Il datastore deve restituire i dati in una tabella o in un array di celle. I mini-batch personalizzati del datastore devono produrre tabelle. Il formato dell'output del datastore dipende dall'architettura della rete neurale.

Architettura della rete neuraleOutput del datastoreEsempio di output
Singolo livello di input

Tabella o array di celle con due colonne.

La prima e la seconda colonna specificano rispettivamente i predittori e le risposte.

Gli elementi della tabella devono essere scalari, vettori riga o array di celle 1x1 contenenti un array numerico.

I mini-batch personalizzati del datastore devono produrre tabelle.

Tabella per la rete neurale con un input e un output:

data = read(ds)
data =

  4×2 table

        Predictors        Response
    __________________    ________

    {24×1 double}            2    
    {24×1 double}            7    
    {24×1 double}            9    
    {24×1 double}            9  

Array di celle per la rete neurale con un input e un output:

data = read(ds)
data =

  4×2 cell array

    {24×1 double}    {[2]}
    {24×1 double}    {[7]}
    {24×1 double}    {[9]}
    {24×1 double}    {[9]}

Livelli multipli di input

Array di celle con colonne (numInputs + 1), dove numInputs è il numero di input della rete neurale.

Le prime colonne numInputs specificano i predittori per ogni input e l'ultima colonna specifica le risposte.

L'ordine degli input è dato dalla proprietà InputNames del grafo dei livelli layers.

Array di celle per la rete neurale con due input e un output:

data = read(ds)
data =

  4×3 cell array

    {24×1 double}    {28×1 double}    {[2]}
    {24×1 double}    {28×1 double}    {[2]}
    {24×1 double}    {28×1 double}    {[9]}
    {24×1 double}    {28×1 double}    {[9]}

I predittori devono essere vettori colonna c x 1, dove c è il numero di feature.

Il formato delle risposte dipende dal tipo di attività.

AttivitàFormato delle risposte
ClassificazioneScalare categorico
Regressione

  • Scalare

  • Vettore numerico

Per ulteriori informazioni, vedere Datastores for Deep Learning.

Tabella

Per i dati delle feature che si adattano alla memoria e non richiedono elaborazioni aggiuntive come le trasformazioni personalizzate, è possibile specificare i dati delle feature e le risposte come tabella.

Ciascuna riga della tabella corrisponde a un'osservazione. La disposizione dei predittori e delle risposte nelle colonne della tabella dipende dal tipo di attività.

AttivitàPredittoriRisposte
Classificazione delle feature

Feature specificate in una o più colonne come scalari.

Se non si specifica l'argomento responses, i predittori devono trovarsi nelle prime colonne numFeatures della tabella, dove numFeatures è il numero di feature dei dati di input.

Etichetta categorica

Regressione delle feature

Una o più colonne di valori scalari

Per le reti neurali di classificazione con input di feature, se l'argomento responses non viene specificato, per impostazione predefinita, la funzione utilizza le prime colonne (numColumns - 1) di tbl per i predittori e l'ultima colonna per le etichette, dove numFeatures è il numero di feature dei dati di input.

Per le reti neurali di regressione con input di feature, se l'argomento responseNames non viene specificato, per impostazione predefinita, la funzione utilizza le prime colonne numFeatures per i predittori e le colonne successive per le risposte, dove numFeatures è il numero di feature dei dati di input.

Array numerico

Per i dati delle feature che si adattano alla memoria e non richiedono elaborazioni aggiuntive come le trasformazioni personalizzate, è possibile specificare i dati delle feature come array numerico. Se si specificano i dati delle feature come array numerico, è inoltre necessario specificare l'argomento responses.

L'array numerico deve essere un array numerico N x numFeatures, dove N è il numero di osservazioni e numFeatures è il numero di feature dei dati di input.

Suggerimento

  • La normalizzazione delle risposte spesso aiuta a stabilizzare e velocizzare l'addestramento delle reti neurali per la regressione. Per ulteriori informazioni, vedere Addestramento della rete neurale convoluzionale per la regressione.

  • Le risposte non devono contenere alcun NaN. Se i dati del predittore contengono dei NaN, gli stessi verranno propagati attraverso l’addestramento. Tuttavia, nella maggior parte dei casi, l’addestramento non riesce a convergere.

  • Questo argomento supporta i predittori a valore complesso. Per addestrare una rete con predittori a valore complesso utilizzando la funzione trainNetwork, l'opzione SplitComplexInputs del livello di input deve essere 1 (true).

Dati misti e risposte, specificati come uno dei seguenti modi:

Tipo di datiDescrizioneEsempi di utilizzo
TransformedDatastoreDatastore che trasforma batch di dati letti da un datastore sottostante utilizzando una funzione di trasformazione personalizzata.

  • Addestrare reti neurali con più input.

  • Trasformare gli output dei datastore non supportati da trainNetwork nel formato richiesto.

  • Applicare trasformazioni personalizzate all'output del datastore.

CombinedDatastoreDatastore che legge da due o più datastore sottostanti.

  • Addestrare reti neurali con più input.

  • Combinare predittori e risposte provenienti da diverse sorgenti di dati.

Datastore personalizzato di mini-batchDatastore personalizzato che restituisce mini-batch di dati.

Addestrare la rete neurale utilizzando dati in un formato non supportato da altri datastore.

Per i dettagli, vedere Develop Custom Mini-Batch Datastore.

È possibile utilizzare altri datastore integrati per l'addestramento delle reti neurali di Deep Learning utilizzando le funzioni transform e combine. Queste funzioni possono convertire i dati letti dai datastore nel formato tabella o array di celle richiesto da trainNetwork. Per ulteriori informazioni, vedere Datastores for Deep Learning.

Il datastore deve restituire i dati in una tabella o in un array di celle. I mini-batch personalizzati del datastore devono produrre tabelle. Il formato dell'output del datastore dipende dall'architettura della rete neurale.

Output del datastoreEsempio di output

Array di celle con colonne (numInputs + 1), dove numInputs è il numero di input della rete neurale.

Le prime colonne numInputs specificano i predittori per ogni input e l'ultima colonna specifica le risposte.

L'ordine degli input è dato dalla proprietà InputNames del grafo dei livelli layers.

data = read(ds)
data =

  4×3 cell array

    {24×1 double}    {28×1 double}    {[2]}
    {24×1 double}    {28×1 double}    {[2]}
    {24×1 double}    {28×1 double}    {[9]}
    {24×1 double}    {28×1 double}    {[9]}

Per gli input dei predittori di immagini, sequenze e feature, il formato dei predittori deve corrispondere ai formati descritti rispettivamente nelle descrizioni degli argomenti images, sequences o features. In modo analogo, il formato delle risposte deve corrispondere ai formati descritti nelle descrizioni degli argomenti images, sequences o features corrispondenti al tipo di attività.

La funzione trainNetwork supporta le reti neurali con al massimo un livello di input di sequenza.

Per un esempio che mostra come addestrare una rete neurale con più input, vedere Train Network on Image and Feature Data.

Suggerimento

  • Per convertire un array numerico in un datastore, utilizzare ArrayDatastore.

  • Quando si combinano i livelli di una rete neurale con tipi di dati misti, potrebbe essere necessario riformattare i dati prima di passarli a un livello di combinazione (come un livello di concatenazione o di somma). Per riformattare i dati, è possibile utilizzare un livello di appiattimento per appiattire le dimensioni spaziali nella dimensione del canale, oppure creare un oggetto FunctionLayer o un livello personalizzato che esegua nuovamente la formattazione e la modellazione.

  • Questo argomento supporta i predittori a valore complesso. Per addestrare una rete con predittori a valore complesso utilizzando la funzione trainNetwork, l'opzione SplitComplexInputs del livello di input deve essere 1 (true).

Risposte.

Quando i dati di input sono un array numerico o un array di celle, specificare le risposte come una delle seguenti opzioni.

  • vettore categorico di etichette

  • array numerico di risposte numeriche

  • array di celle di sequenze categoriche o numeriche

Quando i dati di input sono una tabella, è possibile specificare opzionalmente quali colonne della tabella contengono le risposte, come una delle seguenti opzioni:

  • vettore di carattere

  • array di celle dei vettori di carattere

  • array di stringhe

Quando i dati di input sono un array numerico o un array di celle, il formato delle risposte dipende dal tipo di attività.

AttivitàFormato
ClassificazioneClassificazione dell’immagineVettore categorico N x 1 di etichette, dove N è il numero di osservazioni.
Classificazione delle feature
Classificazione da sequenza a etichetta
Classificazione da sequenza a sequenza

Array di celle N x 1 di sequenze categoriche di etichette, dove N è il numero di osservazioni. Ciascuna sequenza deve avere lo stesso numero di passi temporali della sequenza del predittore corrispondente.

Per le attività di classificazione da sequenza a sequenza con una sola osservazione, sequences può anche essere un vettore. In questo caso, responses deve essere un vettore riga categorico di etichette.

RegressioneRegressione dell'immagine bidimensionale
  • Matrice N x R, dove N è il numero di immagini e R è il numero di risposte.

  • Array numerico h x w x c x N, dove h, w e c sono rispettivamente l’altezza, la larghezza e il numero di canali delle immagini e N è il numero di immagini.

Regressione dell'immagine tridimensionale
  • Matrice N x R, dove N è il numero di immagini e R è il numero di risposte.

  • Array numerico h x w x d x c x N, dove h, w, d e c sono rispettivamente l'altezza, la larghezza, la profondità e il numero di canali delle immagini e N è il numero di immagini.

Regressione delle feature

Matrice N x R, dove N è il numero di osservazioni e R è il numero di risposte.

Regressione da sequenza a singoloMatrice N x R, dove N è il numero di sequenze e R è il numero di risposte.
Regressione da sequenza a sequenza

Array di celle N x 1 di sequenze numeriche, dove N è il numero di sequenze, con sequenze date da uno dei seguenti elementi:

  • Matrice R x s, dove R è il numero di risposte e s è la lunghezza della sequenza del predittore corrispondente.

  • Array h x w x R x s, dove h e w sono rispettivamente l'altezza e la larghezza dell'output, R è il numero di risposte e s è la lunghezza della sequenza del predittore corrispondente.

  • Array h x w x d x R x s, dove h, w e d sono rispettivamente l'altezza, la larghezza e la profondità dell'output, R è il numero di risposte e s è la lunghezza della sequenza del predittore corrispondente.

Per le attività di regressione da sequenza a sequenza con una sola osservazione, sequences può essere un array numerico. In questo caso, responses deve essere un array numerico di risposte.

Suggerimento

La normalizzazione delle risposte spesso aiuta a stabilizzare e velocizzare l'addestramento delle reti neurali per la regressione. Per ulteriori informazioni, vedere Addestramento della rete neurale convoluzionale per la regressione.

Suggerimento

Le risposte non devono contenere alcun NaN. Se i dati del predittore contengono dei NaN, gli stessi verranno propagati attraverso l’addestramento. Tuttavia, nella maggior parte dei casi, l’addestramento non riesce a convergere.

Livelli della rete neurale, specificati come array di Layer o oggetto LayerGraph.

Per creare una rete neurale con tutti i livelli collegati in sequenza, è possibile utilizzare un array di Layer come argomento di input. In questo caso, la rete neurale restituita è un oggetto SeriesNetwork.

Una rete neurale a grafo aciclico diretto (DAG) presenta una struttura complessa in cui i livelli possono avere più input e più output. Per creare una rete neurale DAG, specificare l'architettura della rete neurale come oggetto LayerGraph, quindi utilizzare il grafo dei livelli come argomento di input per trainNetwork.

La funzione trainNetwork supporta le reti neurali con al massimo un livello di input di sequenza.

Per un elenco dei livelli integrati, vedere List of Deep Learning Layers.

Opzioni di addestramento, specificate come oggetto TrainingOptionsSGDM, TrainingOptionsRMSProp o TrainingOptionsADAM restituito dalla funzione trainingOptions.

Argomenti di output

comprimi tutto

Rete neurale addestrata, restituita come oggetto SeriesNetwork o come oggetto DAGNetwork.

Se si addestra la rete neurale utilizzando un array di Layer, net è un oggetto SeriesNetwork. Se si addestra la rete neurale utilizzando un oggetto LayerGraph, net è un oggetto DAGNetwork.

Informazioni sull'addestramento, restituite come struttura, in cui ciascun campo è uno scalare o un vettore numerico con un elemento per ogni iterazione di addestramento.

Per le attività di classificazione, info comprende i seguenti campi:

  • TrainingLoss: valori della funzione di perdita

  • TrainingAccuracy: precisioni dell'addestramento

  • ValidationLoss: valori della funzione di perdita

  • ValidationAccuracy: precisioni della validazione

  • BaseLearnRate: velocità di apprendimento

  • FinalValidationLoss: perdita di validazione della rete neurale restituita

  • FinalValidationAccuracy: precisione della validazione della rete neurale restituita

  • OutputNetworkIteration: numero di iterazioni della rete neurale restituita

Per le attività di regressione, info comprende i seguenti campi:

  • TrainingLoss: valori della funzione di perdita

  • TrainingRMSE: valori RMSE dell'addestramento

  • ValidationLoss: valori della funzione di perdita

  • ValidationRMSE: valori RMSE della validazione

  • BaseLearnRate: velocità di apprendimento

  • FinalValidationLoss: perdita di validazione della rete neurale restituita

  • FinalValidationRMSE: RMSE di validazione della rete neurale restituita

  • OutputNetworkIteration: numero di iterazioni della rete neurale restituita

La struttura contiene solo i campi ValidationLoss, ValidationAccuracy, ValidationRMSE, FinalValidationLoss, FinalValidationAccuracy e FinalValidationRMSE quando options specifica i dati di validazione. L'opzione di addestramento ValidationFrequency determina a quali iterazioni il software calcola le metriche di validazione. Le metriche di validazione finali sono scalari. Gli altri campi della struttura sono vettori riga, dove ciascun elemento corrisponde a un'iterazione di addestramento. Per le iterazioni in cui il software non calcola le metriche di validazione, i valori corrispondenti nella struttura sono NaN.

Per le reti neurali che contengono livelli di normalizzazione in batch, se l'opzione di addestramento BatchNormalizationStatistics è 'population', le metriche di validazione finali sono spesso diverse dalle metriche di validazione valutate durante l'addestramento. Questo avviene perché i livelli di normalizzazione in batch nella rete neurale finale eseguono operazioni diverse rispetto a quelle eseguite durante l'addestramento. Per ulteriori informazioni, vedere batchNormalizationLayer.

Ulteriori informazioni

comprimi tutto

Funzionalità estese

espandi tutto

Cronologia versioni

Introdotto in R2016a

espandi tutto