ClassificationOutputLayer
Classification layer
Description
A classification layer computes the cross-entropy loss for classification and weighted classification tasks with mutually exclusive classes.
Creation
Create a classification layer using classificationLayer
.
Properties
Classification Output
ClassWeights
— Class weights for weighted cross-entropy loss
'none'
(default) | vector of positive numbers
Class weights for weighted cross-entropy loss, specified as a vector of positive numbers or
'none'
.
For vector class weights, each element represents the weight for the corresponding class in the Classes
property. To specify a vector of class weights, you must also specify the classes using 'Classes'
.
If the ClassWeights
property is 'none'
, then the layer applies unweighted cross-entropy loss.
Classes
— Classes of the output layer
"auto"
(default) | categorical vector | string array | cell array of character vectors
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)
.
Data Types: char
| categorical
| string
| cell
OutputSize
— Size of the output
'auto'
(default) | positive integer
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'
.
LossFunction
— Loss function for training
'crossentropyex'
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
— Layer name
""
(default) | character vector | string scalar
Layer name, specified as a character vector or a string scalar.
For Layer
array input, the trainnet
, trainNetwork
, assembleNetwork
, layerGraph
, and
dlnetwork
functions automatically assign
names to layers with the name ""
.
The ClassificationOutputLayer
object stores this property as a character vector.
Data Types: char
| string
NumInputs
— Number of inputs
1
(default)
This property is read-only.
Number of inputs to the layer, returned as 1
. This layer accepts a
single input only.
Data Types: double
InputNames
— Input names
{'in'}
(default)
This property is read-only.
Input names, returned as {'in'}
. This layer accepts a single input
only.
Data Types: cell
NumOutputs
— Number of outputs
0 (default)
Number of outputs of the layer. The layer has no outputs.
Data Types: double
OutputNames
— Output names
{}
(default)
Output names of the layer. The layer has no outputs.
Data Types: cell
Examples
Create Classification Layer
Create a classification layer with the name 'output'
.
layer = classificationLayer('Name','output')
layer = ClassificationOutputLayer with properties: Name: 'output' Classes: 'auto' ClassWeights: 'none' OutputSize: 'auto' Hyperparameters LossFunction: 'crossentropyex'
Include a classification output layer in a Layer
array.
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
Create Weighted Classification Layer
Create a weighted classification layer for three classes with names "cat", "dog", and "fish", with weights 0.7, 0.2, and 0.1, respectively.
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'
Include a weighted classification output layer in a Layer array.
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
More About
Classification Output Layer
A classification layer computes the cross-entropy loss for classification and weighted classification tasks with mutually exclusive classes.
For typical classification networks, the classification layer usually
follows a softmax layer. In the classification layer, trainNetwork
takes the values from the softmax function and assigns each input to one of the
K mutually exclusive classes using the cross entropy function for a
1-of-K coding scheme [1]:
where N is the number of samples, K is the number of classes, is the weight for class i, is the indicator that the nth sample belongs to the ith class, and is the output for sample n for class i, which in this case, is the value from the softmax function. In other words, is the probability that the network associates the nth input with class i.
References
[1] Bishop, C. M. Pattern Recognition and Machine Learning. Springer, New York, NY, 2006.
Version History
Introduced in R2016aR2018b: ClassNames
property will be removed
ClassNames
will be removed. Use Classes
instead. To
update your code, replace all instances of ClassNames
with
Classes
. There are some differences between the properties that
require additional updates to your code.
The ClassNames
property of the output layer is a cell array of character
vectors. The Classes
property is a categorical array. To use the value
of Classes
with functions that require cell array input, convert the
classes using the cellstr
function.
See Also
Apri esempio
Si dispone di una versione modificata di questo esempio. Desideri aprire questo esempio con le tue modifiche?
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)