# mse

Half mean squared error

## 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 the following layer:

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

Dimension order of unformatted input data, specified as the comma-separated pair consisting of `'DataFormat'` and a character array or string `FMT` that provides a label for each dimension of the data. Each character in `FMT` must be one of the following:

• `'S'` — Spatial

• `'C'` — Channel

• `'B'` — Batch (for example, samples and observations)

• `'T'` — Time (for example, sequences)

• `'U'` — Unspecified

You can specify multiple dimensions labeled `'S'` or `'U'`. You can use the labels `'C'`, `'B'`, and `'T'` at most once.

You must specify `'DataFormat',FMT` when the input data is not a formatted `dlarray`.

Example: `'DataFormat','SSCB'`

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

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.

## Version History

Introduced in R2019b