crossentropy
Neural network performance
Description
calculates a network performance given targets and outputs, with optional performance weights
and other parameters. The function returns a result that heavily penalizes outputs that are
extremely inaccurate (perf
= crossentropy(net
,targets
,outputs
,perfWeights
)y
near 1-t
), with very little
penalty for fairly correct classifications (y
near t
).
Minimizing cross-entropy leads to good classifiers.
The cross-entropy for each pair of output-target elements is calculated as: ce =
-t .* log(y)
.
The aggregate cross-entropy performance is the mean of the individual values:
perf = sum(ce(:))/numel(ce)
.
Special case (N = 1): If an output consists of only one element, then the outputs and
targets are interpreted as binary encoding. That is, there are two classes with targets of 0
and 1, whereas in 1-of-N encoding, there are two or more classes. The binary cross-entropy
expression is: ce = -t .* log(y) - (1-t) .* log(1-y)
.
supports customization according to the specified name-value pair arguments.perf
= crossentropy(___,Name,Value
)
Examples
Calculate Network Performance
This example shows how to design a classification network with cross-entropy and 0.1 regularization, then calculate performance on the whole dataset.
[x,t] = iris_dataset; net = patternnet(10); net.performParam.regularization = 0.1; net = train(net,x,t);
y = net(x);
perf = crossentropy(net,t,y,{1},'regularization',0.1)
perf = 0.0278
Set crossentropy as Performance Function
This example shows how to set up the network to use the
crossentropy
during training.
net = feedforwardnet(10); net.performFcn = 'crossentropy'; net.performParam.regularization = 0.1; net.performParam.normalization = 'none';
Input Arguments
net
— neural network
network object
Neural network, specified as a network object.
Example: net = feedforwardnet(10);
targets
— neural network target values
matrix or cell array of numeric values
Neural network target values, specified as a matrix or cell array of numeric values.
Network target values define the desired outputs, and can be specified as an
N
-by-Q
matrix of Q
N
-element vectors, or an M
-by-TS
cell array where each element is an Ni
-by-Q
matrix.
In each of these cases, N
or Ni
indicates a
vector length, Q
the number of samples, M
the number of
signals for neural networks with multiple outputs, and TS
is the number of
time steps for time series data. targets
must have the same
dimensions as outputs
.
The target matrix columns consist of all zeros and a single 1 in the position of the
class being represented by that column vector. When N = 1, the software uses cross entropy
for binary encoding, otherwise it uses cross entropy for 1-of-N encoding.
NaN
values are allowed to indicate unknown or don't-care output values.
The performance of NaN
target values is ignored.
Data Types: double
| cell
outputs
— neural network output values
matrix or cell array of numeric values
Neural network output values, specified as a matrix or cell array of numeric values.
Network output values can be specified as an N
-by-Q
matrix of Q
N
-element vectors, or an M
-by-TS
cell array where each element is an Ni
-by-Q
matrix. In
each of these cases, N
or Ni
indicates a vector length,
Q
the number of samples, M
the number of signals for
neural networks with multiple outputs and TS
is the number of time steps
for time series data. outputs
must have the same dimensions as
targets
.
Outputs can include NaN
to indicate unknown output values, presumably
produced as a result of NaN
input values (also representing unknown or
don't-care values). The performance of NaN
output values is
ignored.
General case (N>=2): The columns of the output matrix represent estimates of class
membership, and should sum to 1. You can use the softmax
transfer
function to produce such output values. Use patternnet
to create
networks that are already set up to use cross-entropy performance with a softmax output
layer.
Data Types: double
| cell
perfWeights
— performance weights
{1}
(default) | vector or cell array of numeric values
Performance weights, specified as a vector or cell array of numeric values. Performance weights are an optional argument defining the importance of each performance value, associated with each target value, using values between 0 and 1. Performance values of 0 indicate targets to ignore, values of 1 indicate targets to be treated with normal importance. Values between 0 and 1 allow targets to be treated with relative importance.
Performance weights have many uses. They are helpful for classification problems, to indicate which classifications (or misclassifications) have relatively greater benefits (or costs). They can be useful in time series problems where obtaining a correct output on some time steps, such as the last time step, is more important than others. Performance weights can also be used to encourage a neural network to best fit samples whose targets are known most accurately, while giving less importance to targets which are known to be less accurate.
perfWeights
can have the same dimensions as
targets
and outputs
. Alternately, each dimension of
the performance weights can either match the dimension of targets
and
outputs
, or be 1. For instance, if targets
is an
N
-by-Q
matrix defining Q
samples of
N
-element vectors, the performance weights can be
N
-by-Q
indicating a different importance for each
target value, or N
-by-1
defining a different importance
for each row of the targets, or 1
-by-Q
indicating a
different importance for each sample, or be the scalar 1 (i.e. 1-by-1) indicating the same
importance for all target values.
Similarly, if outputs
and targets
are cell arrays
of matrices, the perfWeights
can be a cell array of the same size, a row
cell array (indicating the relative importance of each time step), a column cell array
(indicating the relative importance of each neural network output), or a cell array of a
single matrix or just the matrix (both cases indicating that all matrices have the same
importance values).
For any problem, a perfWeights
value of {1}
(the
default) or the scalar 1 indicates all performances have equal importance.
Data Types: double
| cell
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
the argument name and Value
is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose
Name
in quotes.
Example: 'normalization','standard'
specifies the inputs and targets to
be normalized to the range (-1,+1).
regularization
— proportion of performance attributed to weight/bias values
0 (default) | numeric value in the range (0,1)
Proportion of performance attributed to weight/bias values, specified as a double between 0 (the default) and 1. A larger value penalizes the network for large weights, and the more likely the network function will avoid overfitting.
Example: 'regularization',0
Data Types: single
| double
normalization
— Normalization mode for outputs, targets, and errors
'none'
(default) | 'standard'
| 'percent'
Normalization mode for outputs, targets, and errors, specified as
'none'
, 'standard'
, or 'percent'
.
'none'
performs no normalization. 'standard'
results
in outputs and targets being normalized to (-1, +1), and therefore errors in the range (-2,
+2).'percent'
normalizes outputs and targets to (-0.5, 0.5) and errors
to (-1, 1).
Example: 'normalization','standard'
Data Types: char
Output Arguments
perf
— network performance
double
Network performance, returned as a double in the range (0,1).
Version History
Introduced in R2013b
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
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)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)