Main Content

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.

esempio

layer = classificationLayer crea un livello di classificazione.

layer = classificationLayer(Name,Value) imposta le proprietà opzionali 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

comprimi tutto

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

comprimi tutto

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'

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

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.

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

comprimi tutto

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

comprimi tutto

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]:

loss=1Nn=1Ni=1Kwitnilnyni,

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

Cronologia versioni

Introdotto in R2016a

comprimi tutto

R2024a: 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 oggetti dlnetwork, 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 oggetto dlnetwork, 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 di trainNetwork.

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 consigliatoConsigliato
net = trainNetwork(data,layers,options), dove layers contiene un oggetto ClassificationOutputLayer.

net = trainnet(data,layers,"crossentropy",options);
In questo esempio, 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);
In questo esempio, weights specifica i pesi delle classi e layers specifica la stessa rete senza un oggetto ClassificationOutputLayer.