trainNetwork
Addestramento di reti neurali (non consigliato)
trainNetwork non è consigliata. Utilizzare invece la funzione trainnet. Per ulteriori informazioni, vedere Storico della versione.
Sintassi
Descrizione
Esempi
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 WaveformDataVisualizzare 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
Dati dell'immagine, specificati come uno dei seguenti modi:
| Tipo di dati | Descrizione | Esempi di utilizzo | |
|---|---|---|---|
| Datastore | ImageDatastore | Datastore 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 Gli oggetti |
AugmentedImageDatastore | Datastore che applica trasformazioni geometriche affini casuali, tra cui il ridimensionamento, la rotazione, la riflessione, il taglio e la traslazione. |
| |
TransformedDatastore | Datastore che trasforma batch di dati letti da un datastore sottostante utilizzando una funzione di trasformazione personalizzata. |
| |
CombinedDatastore | Datastore che legge da due o più datastore sottostanti. |
| |
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-batch | Datastore 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 | Immagini 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. | |
| Tabella | Immagini 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.
RandomPatchExtractionDatastore(Image Processing Toolbox)DenoisingImageDatastore(Image Processing Toolbox)Datastore personalizzato di mini-batch. Per i dettagli, vedere Develop Custom Mini-Batch Datastore.
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 neurale | Output del datastore | Esempio 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 ( Le prime colonne L'ordine degli input è dato dalla proprietà | 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.
| Dati | Formato |
|---|---|
| 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 tridimensionali | Array 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’immagine | Scalare categorico |
| Regressione dell'immagine |
|
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.
| Dati | Formato |
|---|---|
| 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 tridimensionali | 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. |
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’immagine | Scalare categorico |
| Regressione dell'immagine |
|
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'opzioneSplitComplexInputsdel livello di input deve essere1(true).
Dati sequenziali o di serie temporali, specificati come uno dei seguenti modi:
| Tipo di dati | Descrizione | Esempi di utilizzo | |
|---|---|---|---|
| Datastore | TransformedDatastore | Datastore che trasforma batch di dati letti da un datastore sottostante utilizzando una funzione di trasformazione personalizzata. |
|
CombinedDatastore | Datastore che legge da due o più datastore sottostanti. | Combinare predittori e risposte provenienti da diverse sorgenti di dati. | |
| Datastore personalizzato di mini-batch | Datastore 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 celle | Una 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.
Datastore personalizzato di mini-batch. 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. 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 datastore | Esempio 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.
| Dati | Formato 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 etichetta | Scalare categorico |
| Regressione da sequenza a singolo | Scalare |
| Regressione da sequenza a vettore | Vettore riga numerico |
| Classificazione da sequenza a sequenza |
Ciascuna sequenza del mini-batch deve avere la stessa lunghezza di sequenza. |
| Regressione da sequenza a sequenza |
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.
| Input | Descrizione |
|---|---|
| Sequenze di vettori | Matrici c x s, dove c è il numero di feature delle sequenze e s è la lunghezza della sequenza. |
| Sequenze di immagini monodimensionali | Array 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 bidimensionali | Array 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 tridimensionali | 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 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'opzioneSplitComplexInputsdel livello di input deve essere1(true).
Dati delle feature, specificati come uno dei seguenti modi:
| Tipo di dati | Descrizione | Esempi di utilizzo | |
|---|---|---|---|
| Datastore | TransformedDatastore | Datastore che trasforma batch di dati letti da un datastore sottostante utilizzando una funzione di trasformazione personalizzata. |
|
CombinedDatastore | Datastore che legge da due o più datastore sottostanti. |
| |
| Datastore personalizzato di mini-batch | Datastore 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. | |
| Tabella | Dati 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 numerico | Dati 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.
Datastore personalizzato di mini-batch. 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.
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 neurale | Output del datastore | Esempio 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 ( Le prime colonne L'ordine degli input è dato dalla proprietà | 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 |
|---|---|
| Classificazione | Scalare categorico |
| Regressione |
|
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à | Predittori | Risposte |
|---|---|---|
| Classificazione delle feature | Feature specificate in una o più colonne come scalari. Se non si specifica l'argomento | 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 deiNaN, 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'opzioneSplitComplexInputsdel livello di input deve essere1(true).
Dati misti e risposte, specificati come uno dei seguenti modi:
| Tipo di dati | Descrizione | Esempi di utilizzo |
|---|---|---|
TransformedDatastore | Datastore che trasforma batch di dati letti da un datastore sottostante utilizzando una funzione di trasformazione personalizzata. |
|
CombinedDatastore | Datastore che legge da due o più datastore sottostanti. |
|
| Datastore personalizzato di mini-batch | Datastore 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 datastore | Esempio di output |
|---|---|
Array di celle con colonne ( Le prime colonne L'ordine degli input è dato dalla proprietà | 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
FunctionLayero 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'opzioneSplitComplexInputsdel livello di input deve essere1(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 | |
|---|---|---|
| Classificazione | Classificazione dell’immagine | Vettore 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, | |
| Regressione | Regressione dell'immagine bidimensionale |
|
| Regressione dell'immagine tridimensionale |
| |
| Regressione delle feature | Matrice N x R, dove N è il numero di osservazioni e R è il numero di risposte. | |
| Regressione da sequenza a singolo | Matrice 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:
Per le attività di regressione da sequenza a sequenza con una sola osservazione, | |
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
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 perditaTrainingAccuracy: precisioni dell'addestramentoValidationLoss: valori della funzione di perditaValidationAccuracy: precisioni della validazioneBaseLearnRate: velocità di apprendimentoFinalValidationLoss: perdita di validazione della rete neurale restituitaFinalValidationAccuracy: precisione della validazione della rete neurale restituitaOutputNetworkIteration: numero di iterazioni della rete neurale restituita
Per le attività di regressione, info comprende i seguenti campi:
TrainingLoss: valori della funzione di perditaTrainingRMSE: valori RMSE dell'addestramentoValidationLoss: valori della funzione di perditaValidationRMSE: valori RMSE della validazioneBaseLearnRate: velocità di apprendimentoFinalValidationLoss: perdita di validazione della rete neurale restituitaFinalValidationRMSE: RMSE di validazione della rete neurale restituitaOutputNetworkIteration: 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
Deep Learning Toolbox™ consente di salvare le reti neurali come file .mat durante l'addestramento. Questa salvataggio periodico è particolarmente utile quando si ha una rete neurale di grandi dimensioni o un ampio set di dati, e l'addestramento richiede molto tempo. Se l'addestramento viene interrotto per qualche motivo, è possibile riprendere l'addestramento dall'ultimo checkpoint salvato della rete neurale. Se si desidera che la funzione trainNetwork salvi le reti neurali con checkpoint, è necessario specificare il nome del percorso utilizzando l'opzione CheckpointPath di trainingOptions. Se il percorso specificato non esiste, trainingOptions restituisce un errore.
Il software assegna automaticamente nomi unici ai file della rete neurale con checkpoint. Nel nome dell'esempio net_checkpoint__351__2018_04_12__18_09_52.mat, 351 è il numero di iterazione, 2018_04_12 è la data e 18_09_52 è l'ora in cui il software salva la rete neurale. È possibile caricare un file di rete neurale con checkpoint facendo doppio clic su di esso o utilizzando il comando load dalla riga di comando. Ad esempio:
load net_checkpoint__351__2018_04_12__18_09_52.mat
trainNetwork. Ad esempio:trainNetwork(XTrain,TTrain,net.Layers,options)
Quando si addestra una rete neurale utilizzando le funzioni trainnet o trainNetwork oppure quando si utilizzano le funzioni di previsione o validazione con gli oggetti DAGNetwork e SeriesNetwork, il software esegue questi calcoli utilizzando l'aritmetica in virgola mobile a singola precisione. Le funzioni di previsione e validazione includono predict, classify e activations. Il software utilizza l'aritmetica a singola precisione quando si addestrano le reti neurali utilizzando sia CPU che GPU.
Per fornire le migliori prestazioni, non è garantito che il Deep Learning che utilizza una GPU in MATLAB® sia deterministico. A seconda dell'architettura di rete, in alcune condizioni, si potrebbero ottenere risultati diversi utilizzando una GPU per addestrare due reti identiche o fare due previsioni utilizzando la stessa rete e gli stessi dati.
Funzionalità estese
Per eseguire il calcolo in parallelo, impostare l'opzione di addestramento ExecutionEnvironment su "multi-gpu" o "parallel".
Utilizzare trainingOptions per impostare l'opzione di addestramento ExecutionEnvironment e fornire le opzioni a trainNetwork. Se non si imposta ExecutionEnvironment, trainNetwork viene eseguito su una GPU, se disponibile.
Per i dettagli, vedere Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud.
Per prevenire errori di allocazione della memoria, la pratica consigliata è di non trasferire set di dati di addestramento di grandi dimensioni sulla GPU. Addestrare invece la rete neurale su una GPU utilizzando
trainingOptionsper impostareExecutionEnvironmentsu"auto"o"gpu"e fornire le opzioni atrainNetwork.L'opzione
ExecutionEnvironmentdeve essere"auto"o"gpu"quando i dati di input sono:Un
gpuArrayUn array di celle contenente oggetti
gpuArrayUna tabella contenente oggetti
gpuArrayUn datastore che produce array di celle contenenti oggetti
gpuArrayUn datastore che produce tabelle contenenti oggetti
gpuArray
Per ulteriori informazioni, vedere Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Cronologia versioni
Introdotto in R2016aA partire dalla release R2024a, la funzione trainNetwork non è più consigliata; utilizzare invece la funzione trainnet.
Non è prevista la sospensione dell'assistenza per la funzione trainNetwork. Comunque, la funzione trainnet presenta invece questi vantaggi, ed è quindi consigliata:
trainnetsupporta gli oggettidlnetwork, che supportano una gamma più ampia di architetture di rete che è possibile creare o importare da piattaforme esterne.trainnetconsente di specificare le funzioni di perdita con facilità. È possibile scegliere tra le funzioni di perdita integrate o specificare una funzione di perdita personalizzata.trainnetrestituisce un oggettodlnetwork, che è un tipo di dati unificato che supporta la costruzione di reti, la predizione, l'addestramento integrato, la visualizzazione, la compressione, la verifica e i loop di addestramento personalizzati.trainnetè generalmente più veloce ditrainNetwork.
Questa tabella mostra alcuni usi tipici della funzione trainNetwork e come aggiornare il codice per utilizzare invece la funzione trainnet.
| Non consigliato | Consigliato |
|---|---|
net = trainNetwork(data,layers,options); | net = trainnet(data,layers,lossFcn,options); |
net = trainNetwork(X,T,layers,options); | net = trainnet(X,T,layers,lossFcn,options); |
Anziché utilizzare un livello di output, specificare una funzione di perdita utilizzando lossFcn.
Cominciando da R2022b, quando si addestra una rete neurale con dati sequenziali che utilizzano la funzione trainNetwork e l’opzione SequenceLength è un numero intero, il software riempie le sequenze fino a raggiungere la lunghezza della sequenza più lunga in ogni mini-batch, quindi suddividere le sequenze in mini-batch della lunghezza della sequenza specificata. Se SequenceLength non suddivide in modo uniforme la lunghezza della sequenza del mini-batch, l’ultimo mini-batch diviso ha una lunghezza inferiore a SequenceLength. Questo comportamento impedisce l’addestramento della rete neurale su fasi temporali che contengono solo valori di riempimento.
In release precedenti, il software riempie i mini-batch delle sequenze affinché abbiano una lunghezza corrispondente al multiplo più vicino di SequenceLength che è maggiore o uguale alla lunghezza del mini-batch e poi suddivide i dati. Per riprodurre questo comportamento, utilizzare un loop di addestramento personalizzato e implementare questo comportamento quando si pre-elaborano i mini-batch dei dati.
Quando si addestra una rete neurale utilizzando la funzione trainNetwork, l'addestramento si interrompe automaticamente quando la perdita è NaN. Di solito, un valore di perdita di NaN introduce valori NaN nei parametri apprendibili della rete neurale che, a loro volta, possono determinare l'insuccesso della rete neurale nell'addestramento o nell'elaborazione di previsioni valide. Questa modifica aiuta a identificare i problemi della rete neurale prima del completamento dell'addestramento.
Nelle release precedenti, la rete neurale continuava ad addestrarsi quando la perdita era NaN.
Quando si specificano i dati sequenziali per la funzione trainNetwork, il supporto per la specifica delle tabelle dei percorsi dei file MAT sarà rimosso in una release futura.
Per addestrare le reti neurali con sequenze che non si adattano alla memoria, utilizzare un datastore. È possibile utilizzare qualsiasi datastore per leggere i dati e poi utilizzare la funzione transform per trasformare l'output del datastore nel formato richiesto dalla funzione trainNetwork. Ad esempio, è possibile leggere i dati utilizzando un oggetto FileDatastore o TabularTextDatastore, quindi trasformare l'output utilizzando la funzione transform.
Vedi anche
trainnet | trainingOptions | dlnetwork | minibatchpredict | scores2label | predict | analyzeNetwork | Deep Network Designer
Argomenti
- Creazione di una rete neurale semplice di Deep Learning per la classificazione
- Retrain Neural Network to Classify New Images
- Addestramento della rete neurale convoluzionale per la regressione
- Classificazione di sequenze utilizzando il Deep Learning
- Train Network on Image and Feature Data
- Deep Learning in MATLAB
- Define Custom Deep Learning Layers
- List of Deep Learning Layers
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleziona un sito web
Seleziona un sito web per visualizzare contenuto tradotto dove disponibile e vedere eventi e offerte locali. In base alla tua area geografica, ti consigliamo di selezionare: .
Puoi anche selezionare un sito web dal seguente elenco:
Come ottenere le migliori prestazioni del sito
Per ottenere le migliori prestazioni del sito, seleziona il sito cinese (in cinese o in inglese). I siti MathWorks per gli altri paesi non sono ottimizzati per essere visitati dalla tua area geografica.
Americhe
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)