Main Content


Classification layer


A classification layer computes the cross entropy loss for multi-class classification problems with mutually exclusive classes.


Create a classification layer using classificationLayer.


expand all

Classification Output

Classes of the output layer, specified as a categorical vector, string array, cell array of character vectors, or 'auto'. If Classes is 'auto', then the software automatically sets the classes at training time. If you specify the string array or cell array of character vectors str, then the software sets the classes of the output layer to categorical(str,str). The default value is 'auto'.

Data Types: char | categorical | string | cell

This property is read-only.

Size of the output, specified as a positive integer. This value is the number of labels in the data. Before the training, the output size is set to 'auto'.

This property is read-only.

Loss function for training, specified as 'crossentropyex', which stands for Cross Entropy Function for k Mutually Exclusive Classes.


Layer name, specified as a character vector or a string scalar. To include a layer in a layer graph, you must specify a nonempty unique layer name. If you train a series network with the layer and Name is set to '', then the software automatically assigns a name to the layer at training time.

Data Types: char | string

Number of inputs of the layer. This layer accepts a single input only.

Data Types: double

Input names of the layer. This layer accepts a single input only.

Data Types: cell

Number of outputs of the layer. The layer has no outputs.

Data Types: double

Output names of the layer. The layer has no outputs.

Data Types: cell


collapse all

Create a classification layer with the name 'output'.

layer = classificationLayer('Name','output')
layer = 
  ClassificationOutputLayer with properties:

            Name: 'output'
         Classes: 'auto'
      OutputSize: 'auto'

    LossFunction: 'crossentropyex'

Include a classification output layer in a Layer array.

layers = [ ...
    imageInputLayer([28 28 1])
layers = 
  7x1 Layer array with layers:

     1   ''   Image Input             28x28x1 images with 'zerocenter' normalization
     2   ''   Convolution             20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   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

More About

expand all

Compatibility Considerations

expand all

Not recommended starting in R2018b


[1] Bishop, C. M. Pattern Recognition and Machine Learning. Springer, New York, NY, 2006.

Introduced in R2016a