# RegressionOutputLayer

Regression output layer

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

## Creation

Create a regression output layer using `regressionLayer`

.

## Properties

### Regression Output

`ResponseNames`

— Names of responses

`{}`

(default) | cell array of character vectors | string array

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`

`LossFunction`

— Loss function for training

`'mean-squared-error'`

Loss function the software uses for training, specified as
`'mean-squared-error'`

.

### 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 `trainNetwork`

function automatically assigns names to layers with the name `""`

.

The `RegressionOutputLayer`

object stores this property as a character vector.

**Data Types: **`char`

| `string`

`NumInputs`

— Number of inputs

`1`

(default)

Number of inputs to the layer, returned as `1`

. This layer accepts a single input only.

**Data Types: **`double`

`InputNames`

— Input names

`{'in'}`

(default)

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, returned as `0`

. This layer has no outputs.

**Data Types: **`double`

`OutputNames`

— Output names

`{}`

(default)

Output names of the layer, returned as `{}`

. This layer has no outputs.

**Data Types: **`cell`

## Examples

### Create Regression Output Layer

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

### Regression Output Layer

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:

$$\text{MSE}={\displaystyle \sum}_{i=1}^{R}\frac{{({t}_{i}-{y}_{i})}^{2}}{R},$$

where *R* is the number of responses,
*t _{i}* is the target output, and

*y*is the network’s prediction for response

_{i}*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*:

$$\text{loss}=\frac{1}{2}{\displaystyle \sum}_{i=1}^{R}{({t}_{i}-{y}_{i})}^{2}.$$

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

$$\text{loss}=\frac{1}{2}{\displaystyle \sum}_{p=1}^{HWC}{({t}_{p}-{y}_{p})}^{2},$$

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

$$\text{loss}=\frac{1}{2S}{\displaystyle \sum}_{i=1}^{S}{\displaystyle \sum}_{j=1}^{R}{({t}_{ij}-{y}_{ij})}^{2},$$

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

### R2024a: Not recommended

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 a`dlnetwork`

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 than`trainNetwork`

.

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 a
`RegressionOutputLayer` object. | `net = trainnet(X,T,layers,"mse",options);` `layers` specifies same
network without a `RegressionOutputLayer`
object. |

`net = trainNetwork(data,layers,options)` ,
where `layers` contains a
`RegressionOutputLayer` object. | `net = trainnet(data,layers,"mse",options);` `layers` specifies same
network without a `RegressionOutputLayer`
object. |

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