Main Content

La traduzione di questa pagina non è aggiornata. Fai clic qui per vedere l'ultima versione in inglese.

classificationLayer

Livello di output della classificazione

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.

layer = classificationLayer crea un livello di classificazione.

esempio

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

Creare un livello di classificazione ponderata per tre classi con i nomi "gatto", "cane" e "pesce", con pesi rispettivamente di 0,7, 0,2 e 0,1.

classes = ["cat" "dog" "fish"];
classWeights = [0.7 0.2 0.1];

layer = classificationLayer( ...
    'Classes',classes, ...
    'ClassWeights',classWeights)
layer = 
  ClassificationOutputLayer with properties:

            Name: ''
         Classes: [cat    dog    fish]
    ClassWeights: [3x1 double]
      OutputSize: 3

   Hyperparameters
    LossFunction: 'crossentropyex'

Includere un livello di output di classificazione ponderata in un array di livelli.

numClasses = numel(classes);

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    reluLayer
    maxPooling2dLayer(2,'Stride',2)
    fullyConnectedLayer(numClasses)
    softmaxLayer
    classificationLayer('Classes',classes,'ClassWeights',classWeights)]
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         3 fully connected layer
     6   ''   Softmax                 softmax
     7   ''   Classification Output   Class weighted crossentropyex with 'cat' and 2 other classes

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, le funzioni trainNetwork, assembleNetwork, layerGraph e dlnetwork assegnano automaticamente i nomi ai livelli con il nome ''.

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 '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 l’n-esimo campione appartiene alla i-esima classe e yni è l’output per il 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’n-esimo input 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™.

Generazione di codice GPU
Genera codice CUDA® per GPU NVIDIA® con GPU Coder™.

Cronologia versioni

Introdotto in R2016a