RegressionOutputLayer - Regression output layer - MATLAB (original) (raw)
regressionLayer
is not recommended. Use the trainnet function and set the loss function to "mse"
instead. For more information, see Version History.
Description
A regression layer computes the half-mean-squared-error loss for regression tasks.
Properties
Regression Output
Names of the responses, specified a cell array of character vectors or a string array. At training time, the software automatically sets the response names according to the training data. The default is {}
.
Data Types: cell
Loss function the software uses for training, specified as'mean-squared-error'
.
Layer
Layer name, specified as a character vector or a string scalar. For Layer
array input, the trainNetwork
function automatically assigns names to layers with the name ""
.
The RegressionOutputLayer
object stores this property as a character vector.
Data Types: char
| string
Number of inputs to the layer, returned as 1
. This layer accepts a single input only.
Data Types: double
Input names, returned as {'in'}
. This layer accepts a single input only.
Data Types: cell
Number of outputs of the layer, returned as 0
. This layer has no outputs.
Data Types: double
Output names of the layer, returned as {}
. This layer has no outputs.
Data Types: cell
Examples
Create a regression output layer.
Create a regression output layer with the name 'routput'
.
layer = regressionLayer('Name','routput')
layer = RegressionOutputLayer with properties:
Name: 'routput'
ResponseNames: {}
Hyperparameters LossFunction: 'mean-squared-error'
The default loss function for regression is mean-squared-error.
Include a regression output layer in a Layer array.
layers = [ ... imageInputLayer([28 28 1]) convolution2dLayer(12,25) reluLayer fullyConnectedLayer(1) regressionLayer]
layers = 5x1 Layer array with layers:
1 '' Image Input 28x28x1 images with 'zerocenter' normalization
2 '' 2-D Convolution 25 12x12 convolutions with stride [1 1] and padding [0 0 0 0]
3 '' ReLU ReLU
4 '' Fully Connected 1 fully connected layer
5 '' Regression Output mean-squared-error
More About
A regression layer computes the half-mean-squared-error loss for regression tasks. For typical regression problems, a regression layer must follow the final fully connected layer.
For a single observation, the mean-squared-error is given by:
where R is the number of responses,ti is the target output, and_yi_ is the network’s prediction for response i.
For image and sequence-to-one regression networks, the loss function of the regression layer is the half-mean-squared-error of the predicted responses, not normalized by_R_:
For image-to-image regression networks, the loss function of the regression layer is the half-mean-squared-error of the predicted responses for each pixel, not normalized by_R_:
where H, W, and_C_ denote the height, width, and number of channels of the output respectively, and p indexes into each element (pixel) of_t_ and y linearly.
For sequence-to-sequence regression networks, the loss function of the regression layer is the half-mean-squared-error of the predicted responses for each time step, not normalized by_R_:
where S is the sequence length.
When training, the software calculates the mean loss over the observations in the mini-batch.
Version History
Introduced in R2017a
Starting in R2024a, RegressionOutputLayer
objects are not recommended, use the trainnet and set the loss function to "mse"
instead.
There are no plans to remove support for RegressionOutputLayer
objects. However, the trainnet
function has these advantages and is recommended instead:
trainnet
supports dlnetwork objects, which support a wider range of network architectures that you can create or import from external platforms.trainnet
enables you to easily specify loss functions. You can select from built-in loss functions or specify a custom loss function.trainnet
outputs adlnetwork
object, which is a unified data type that supports network building, prediction, built-in training, visualization, compression, verification, and custom training loops.trainnet
is typically faster thantrainNetwork
.
This table shows some typical usages of the trainNetwork
function with RegressionOutputLayer
objects and how to update your code to use the trainnet
function instead.
Not Recommended | Recommended |
---|---|
net = trainNetwork(X,T,layers,options), where layers contains aRegressionOutputLayer object. | net = trainnet(X,T,layers,"mse",options);In this example, layers specifies same network without a RegressionOutputLayer object. |
net = trainNetwork(data,layers,options), where layers contains aRegressionOutputLayer object. | net = trainnet(data,layers,"mse",options);In this example, layers specifies same network without a RegressionOutputLayer object. |