# mse

Half mean squared error

Since R2019b

## Syntax

``loss = mse(Y,targets)``
``loss = mse(Y,targets,'DataFormat',FMT)``

## Description

The half mean squared error operation computes the half mean squared error loss between network predictions and target values for regression tasks.

The loss is calculated using the following formula

`$\text{loss}=\frac{1}{2N}\sum _{i=1}^{M}{\left({X}_{i}-{T}_{i}\right)}^{2}$`

where Xi is the network prediction, Ti is the target value, M is the total number of responses in X (across all observations), and N is the total number of observations in X.

Note

This function computes the half mean squared error loss between predictions and targets stored as `dlarray` data. If you want to calculate the half mean squared error loss within a `layerGraph` object or `Layer` array for use with `trainNetwork`, use `regressionLayer`.

To train a network using the `trainnet` function with mean square error loss, set the loss function to `"mse"`.

example

````loss = mse(Y,targets)` computes the half mean squared error loss between the predictions `Y` and the target values `targets` for regression problems. The input `Y` must be a formatted `dlarray`. The output `loss` is an unformatted `dlarray` scalar.```
````loss = mse(Y,targets,'DataFormat',FMT)` also specifies the dimension format `FMT` when `Y` is not a formatted `dlarray`. ```

## Examples

collapse all

The half mean squared error evaluates how well the network predictions correspond to the target values.

Create the input predictions as a single observation of random values with a height and width of six and a single channel.

```height = 6; width = 6; channels = 1; observations = 1; Y = rand(height,width,channels,observations); Y = dlarray(Y,'SSCB')```

Create the target values as a numeric array with the same dimension order as the input data `Y`.

`targets = ones(height,width,channels,observations);`

Compute the half mean squared error between the predictions and the targets.

`loss = mse(Y,targets)`
```loss = 1x1 dlarray 5.2061```

## Input Arguments

collapse all

Predictions, specified as a formatted `dlarray`, an unformatted `dlarray`, or a numeric array. When `Y` is not a formatted `dlarray`, you must specify the dimension format using the `DataFormat` option.

If `Y` is a numeric array, `targets` must be a `dlarray`.

Target responses, specified as a formatted or unformatted `dlarray` or a numeric array.

The size of each dimension of `targets` must match the size of the corresponding dimension of `Y`.

If `targets` is a formatted `dlarray`, then its format must be the same as the format of `Y`, or the same as `DataFormat` if `Y` is unformatted.

If `targets` is an unformatted `dlarray` or a numeric array, then the function applies the format of `Y` or the value of `DataFormat` to `targets`.

Tip

Formatted `dlarray` objects automatically permute the dimensions of the underlying data to have order `"S"` (spatial), `"C"` (channel), `"B"` (batch), `"T"` (time), then `"U"` (unspecified). To ensure that the dimensions of `Y` and `targets` are consistent, when `Y` is a formatted `dlarray`, also specify `targets` as a formatted `dlarray`.

Description of the data dimensions, specified as a character vector or string scalar.

A data format is a string of characters, where each character describes the type of the corresponding dimension of the data.

The characters are:

• `"S"` — Spatial

• `"C"` — Channel

• `"B"` — Batch

• `"T"` — Time

• `"U"` — Unspecified

For example, for an array containing a batch of sequences where the first, second, and third dimension correspond to channels, observations, and time steps, respectively, you can specify that it has the format `"CBT"`.

You can specify multiple dimensions labeled `"S"` or `"U"`. You can use the labels `"C"`, `"B"`, and `"T"` at most once. The software ignores singleton trailing `"U"` dimensions located after the second dimension.

If the input data is not a formatted `dlarray` object, then you must specify the `FMT` option.

Data Types: `char` | `string`

## Output Arguments

collapse all

Half mean squared error loss, returned as an unformatted `dlarray` scalar. The output `loss` has the same underlying data type as the input `Y`.

## Algorithms

collapse all

### Half Mean Squared Error Loss

The `mse` function computes the half-mean-squared-error loss for regression problems. For more information, see the definition of Regression Output Layer on the `RegressionOutputLayer` reference page.

### Deep Learning Array Formats

Most deep learning networks and functions operate on different dimensions of the input data in different ways.

For example, an LSTM operation iterates over the time dimension of the input data and a batch normalization operation normalizes over the batch dimension of the input data.

To provide input data with labeled dimensions or input data with additional layout information, you can use data formats.

A data format is a string of characters, where each character describes the type of the corresponding dimension of the data.

The characters are:

• `"S"` — Spatial

• `"C"` — Channel

• `"B"` — Batch

• `"T"` — Time

• `"U"` — Unspecified

For example, for an array containing a batch of sequences where the first, second, and third dimension correspond to channels, observations, and time steps, respectively, you can specify that it has the format `"CBT"`.

To create formatted input data, create a `dlarray` object and specify the format using the second argument.

To provide additional layout information with unformatted data, specify the format using the `FMT` argument.