classificationLayer
Livello di output della classificazione (non consigliato)
classificationLayer
non è consigliata. Utilizzare la funzione trainnet
e impostare invece la funzione di perdita su "crossentropy"
. Per ulteriori informazioni, vedere Cronologia della versione.
Descrizione
Un livello di classificazione calcola la perdita di entropia incrociata delle attività di classificazione e di classificazione ponderata con classi che si escludono reciprocamente.
Il livello deduce il numero di classi dalla dimensione dell'output del livello precedente. Ad esempio, per specificare il numero di classi K della rete, è possibile includere un livello completamente connesso con dimensione di uscita K e un livello softmax prima del livello di classificazione.
imposta le proprietà opzionali layer
= classificationLayer(Name,Value
)Name
, ClassWeights
e Classes
utilizzando una o più coppie nome-valore. Ad esempio, classificationLayer('Name','output')
crea un livello di classificazione con il nome 'output'
.
Esempi
Creazione di un livello di classificazione
Creare un livello di classificazione.
Creare un livello di classificazione con il nome 'output'
.
layer = classificationLayer('Name','output')
layer = ClassificationOutputLayer with properties: Name: 'output' Classes: 'auto' ClassWeights: 'none' OutputSize: 'auto' Hyperparameters LossFunction: 'crossentropyex'
Includere un livello di output di classificazione in un array di Layer
.
layers = [ ... imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer maxPooling2dLayer(2,'Stride',2) fullyConnectedLayer(10) softmaxLayer classificationLayer]
layers = 7x1 Layer array with layers: 1 '' Image Input 28x28x1 images with 'zerocenter' normalization 2 '' 2-D Convolution 20 5x5 convolutions with stride [1 1] and padding [0 0 0 0] 3 '' ReLU ReLU 4 '' 2-D Max Pooling 2x2 max pooling with stride [2 2] and padding [0 0 0 0] 5 '' Fully Connected 10 fully connected layer 6 '' Softmax softmax 7 '' Classification Output crossentropyex
Argomenti di input
Argomenti nome-valore
Specificare coppie opzionali di argomenti come Name1=Value1,...,NameN=ValueN
, dove Name
è il nome dell’argomento e Value
è il valore corrispondente. Gli argomenti nome-valore devono comparire dopo gli altri argomenti, ma l'ordine delle coppie non ha importanza.
Prima della R2021a, utilizzare le virgole per separare ogni nome e valore e racchiudere Name
tra virgolette.
Esempio classificationLayer('Name','output')
crea un livello di classificazione con il nome 'output'
Name
— Nome del livello
""
(predefinito) | vettore di carattere | scalare di stringa
Nome del livello, specificato come un vettore di carattere o uno scalare di stringa. Per l'input dell'array di Layer
, la funzione trainNetwork
assegna automaticamente i nomi ai livelli con il nome ""
.
L'oggetto ClassificationOutputLayer
memorizza questa proprietà come vettore di carattere.
Tipi di dati: char
| string
ClassWeights
— Pesi delle classi per la perdita di entropia incrociata ponderata
'none'
(predefinito) | vettore di numeri positivi
Pesi delle classi per la perdita di entropia incrociata ponderata, specificati come vettore di numeri positivi o 'none'
.
Per il vettore dei pesi delle classi, ciascun elemento rappresenta il peso della classe corrispondente nella proprietà Classes
. Per specificare un vettore dei pesi delle classi, è necessario specificare anche le classi utilizzando l'opzione Classes
.
Se la proprietà ClassWeights
è 'none'
, il livello applicherà la perdita di entropia incrociata non ponderata.
Classes
— Classi del livello di output
"auto"
(predefinito) | vettore categorico | array di stringhe | array di celle dei vettori di carattere
Classi del livello di output specificate come un vettore categorico, un array di stringhe, un array di celle dei vettori di carattere o "auto"
. Se Classes
è "auto"
, il software imposterà automaticamente le classi al momento dell'addestramento. Se si specifica l'array di stringhe o l'array di celle dei vettori di carattere str
, il software imposterà le classi del livello di output su categorical(str,str)
.
Tipi di dati: char
| categorical
| string
| cell
Argomenti di output
layer
— Livello di classificazione
Oggetto ClassificationOutputLayer
Livello di classificazione, restituito come un oggetto ClassificationOutputLayer
.
Per informazioni sulla concatenazione dei livelli per costruire un'architettura di rete neurale convoluzionale, vedere Layer
.
Ulteriori informazioni
Livello di classificazione
Un livello di classificazione calcola la perdita di entropia incrociata delle attività di classificazione e di classificazione ponderata con classi che si escludono reciprocamente.
Per le tipiche reti di classificazione, il livello di classificazione segue di norma un livello softmax. Nel livello di classificazione, trainNetwork
ottiene i valori dalla funzione softmax e assegna ciascun input a una delle classi K che si escludono reciprocamente utilizzando la funzione di entropia incrociata per uno schema di codifica 1 di K[1]:
dove N è il numero di campioni, K è il numero di classi, wi è il peso per la classe i, tni è l'indicatore che il campione n appartiene alla classe i e yni è l'output del campione n per la classe i che, in questo caso, è il valore della funzione softmax. In altre parole, yni è la probabilità che la rete associ l'osservazione n alla classe i.
Riferimenti
[1] Bishop, C. M. Pattern Recognition and Machine Learning. Springer, New York, NY, 2006.
Funzionalità estese
Generazione di codice C/C++
Genera codice C e C++ con MATLAB® Coder™.
Note sull’utilizzo e sulle limitazioni:
Il generatore di codice rappresenta i caratteri in un set di codice ASCII a 8 bit determinato dall'impostazione dell'ambiente. Pertanto, l'utilizzo di caratteri non ASCII nei nomi delle classi, nei nomi dei livelli, nella descrizione dei livelli o nei nomi della rete potrebbe comportare degli errori. Per ulteriori informazioni, vedere Encoding of Characters in Code Generation (MATLAB Coder).
Generazione di codice GPU
Genera codice CUDA® per GPU NVIDIA® con GPU Coder™.
Note sull’utilizzo e sulle limitazioni:
Per generare codice CUDA® o C++ utilizzando GPU Coder™, è necessario prima costruire e addestrare una rete neurale profonda. Una volta addestrata e valutata la rete, è possibile configurare il generatore di codice per generare il codice e distribuire la rete neurale convoluzionale su piattaforme che utilizzano i processori GPU NVIDIA® o ARM®. Per ulteriori informazioni, vedere Deep Learning with GPU Coder (GPU Coder).
Per questo livello, è possibile generare codice che sfrutti la libreria di reti neurali profonde NVIDIA CUDA (cuDNN), la libreria di inferenza ad alte prestazioni NVIDIA TensorRT™ o ARM
Compute Library
per GPU Mali.Il generatore di codice rappresenta i caratteri in un set di codice ASCII a 8 bit determinato dall'impostazione dell'ambiente. Pertanto, l'utilizzo di caratteri non ASCII nei nomi delle classi, nei nomi dei livelli, nella descrizione dei livelli o nei nomi della rete potrebbe comportare degli errori. Per ulteriori informazioni, vedere Encoding of Characters in Code Generation (MATLAB Coder).
Cronologia versioni
Introdotto in R2016aR2024a: Non consigliato
A partire dalla release R2024a, non è più consigliato utilizzare gli oggetti ClassificationOutputLayer
, utilizzare trainnet
e impostare invece la funzione di perdita su "crossentropy"
.
Non è prevista la sospensione dell'assistenza per gli oggetti ClassificationOutputLayer
. Comunque, la funzione trainnet
presenta invece questi vantaggi, ed è quindi consigliata:
trainnet
supporta gli oggettidlnetwork
, che supportano una gamma più ampia di architetture di rete che è possibile creare o importare da piattaforme esterne.trainnet
consente di specificare le funzioni di perdita con facilità. È possibile scegliere tra le funzioni di perdita integrate o specificare una funzione di perdita personalizzata.trainnet
restituisce 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
con gli oggetti ClassificationOutputLayer
e come aggiornare il codice per utilizzare invece la funzione trainnet
.
Non consigliato | Consigliato |
---|---|
net = trainNetwork(data,layers,options) , dove layers contiene un oggetto ClassificationOutputLayer . | net = trainnet(data,layers,"crossentropy",options); layers specifica la stessa rete senza un oggetto ClassificationOutputLayer . |
net = trainNetwork(data,layers,options) , dove layers contiene un oggetto ClassificationOutputLayer con ClassWeights impostato su un vettore numerico. | lossFcn = @(Y,T) crossentropy(Y,T,Weights=weights);
net = trainnet(data,layers,"crossentropy",options); weights specifica i pesi delle classi e layers specifica la stessa rete senza un oggetto ClassificationOutputLayer . |
Comando MATLAB
Hai fatto clic su un collegamento che corrisponde a questo comando MATLAB:
Esegui il comando inserendolo nella finestra di comando MATLAB. I browser web non supportano i comandi MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)