instancenorm - Normalize across each channel for each observation independently - MATLAB (original) (raw)

Normalize across each channel for each observation independently

Since R2021a

Syntax

Description

The instance normalization operation normalizes the input data across each channel for each observation independently. To improve the convergence of training the convolutional neural network and reduce the sensitivity to network hyperparameters, use instance normalization between convolution and nonlinear operations such as relu.

After normalization, the operation shifts the input by a learnable offset β and scales it by a learnable scale factor γ.

The instancenorm function applies the layer normalization operation to dlarray data.Using dlarray objects makes working with high dimensional data easier by allowing you to label the dimensions. For example, you can label which dimensions correspond to spatial, time, channel, and batch dimensions using the"S", "T", "C", and"B" labels, respectively. For unspecified and other dimensions, use the"U" label. For dlarray object functions that operate over particular dimensions, you can specify the dimension labels by formatting thedlarray object directly, or by using the DataFormat option.

[Y](#mw%5F12db5d39-2e36-4059-ab33-295c755e13cc) = instancenorm([X](#mw%5F134a1bb5-be62-45a0-880f-aee27c0e88fa%5Fsep%5Fmw%5F04e2502d-c675-44b2-abd1-e144ae7f5377),[offset](#mw%5F134a1bb5-be62-45a0-880f-aee27c0e88fa%5Fsep%5Fmw%5F4c6bcc13-8062-4f68-ba33-1283ee563946),[scaleFactor](#mw%5F134a1bb5-be62-45a0-880f-aee27c0e88fa%5Fsep%5Fmw%5Fdb77bbbd-d7a1-4d76-90d8-f43826970066)) applies the instance normalization operation to the input data X and transforms using the specified offset and scale factor.

The function normalizes over grouped subsets of the 'S' (spatial),'T' (time), and 'U' (unspecified) dimensions ofX for each observation in the 'C' (channel) and'B' (batch) dimensions, independently.

For unformatted input data, use the 'DataFormat' option.

example

[Y](#mw%5F12db5d39-2e36-4059-ab33-295c755e13cc) = instancenorm([X](#mw%5F134a1bb5-be62-45a0-880f-aee27c0e88fa%5Fsep%5Fmw%5F04e2502d-c675-44b2-abd1-e144ae7f5377),[offset](#mw%5F134a1bb5-be62-45a0-880f-aee27c0e88fa%5Fsep%5Fmw%5F4c6bcc13-8062-4f68-ba33-1283ee563946),[scaleFactor](#mw%5F134a1bb5-be62-45a0-880f-aee27c0e88fa%5Fsep%5Fmw%5Fdb77bbbd-d7a1-4d76-90d8-f43826970066),'DataFormat',FMT) applies the instance normalization operation to the unformatted dlarray object X with format specified by FMT using any of the previous syntaxes. The output Y is an unformatteddlarray object with dimensions in the same order asX. For example, 'DataFormat','SSCB' specifies data for 2-D image input with format 'SSCB' (spatial, spatial, channel, batch).

[Y](#mw%5F12db5d39-2e36-4059-ab33-295c755e13cc) = instancenorm(___[Name,Value](#namevaluepairarguments)) specifies options using one or more name-value pair arguments in addition to the input arguments in previous syntaxes. For example, 'Epsilon',3e-5 sets the variance offset to 3e-5.

Examples

collapse all

Apply Instance Normalization

Create randomized input data with two spatial, one channel, and one observation dimension.

width = 12; height = 12; channels = 6; numObservations = 16; X = randn(width,height,channels,numObservations); dlX = dlarray(X,'SSCB');

Create the learnable parameters.

offset = dlarray(zeros(channels,1)); scaleFactor = dlarray(ones(channels,1));

Calculate the instance normalization.

dlZ = instancenorm(dlX,offset,scaleFactor);

View the size and format of the normalized data.

Input Arguments

collapse all

X — Input data

dlarray | numeric array

Input data, specified as a formatted dlarray, an unformatteddlarray, or a numeric array.

If X is an unformatted dlarray or a numeric array, then you must specify the format using the DataFormat option. If X is a numeric array, then eitherscaleFactor or offset must be adlarray object.

X must have a "C" (channel) dimension.

offset — Offset

dlarray | numeric array

Offset β, specified as a formatted dlarray, an unformatted dlarray, or a numeric array with one nonsingleton dimension with size matching the size of the 'C' (channel) dimension of the input X.

If offset is a formatted dlarray object, then the nonsingleton dimension must have label 'C' (channel).

scaleFactor — Scale factor

dlarray | numeric array

Scale factor γ, specified as a formatted dlarray, an unformatted dlarray, or a numeric array with one nonsingleton dimension with size matching the size of the 'C' (channel) dimension of the input X.

If scaleFactor is a formatted dlarray object, then the nonsingleton dimension must have label 'C' (channel).

Name-Value Arguments

Specify optional pairs of arguments asName1=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: 'Epsilon',3e-5 sets the variance offset to3e-5.

DataFormat — Description of data dimensions

character vector | string scalar

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 data dimension.

The characters are:

For example, consider an array containing a batch of sequences where the first, second, and third dimensions correspond to channels, observations, and time steps, respectively. You can specify that this array has the format "CBT" (channel, batch, time).

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

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

For more information, see Deep Learning Data Formats.

Data Types: char | string

Epsilon — Constant to add to mini-batch variances

1e-5 (default) | positive scalar

Constant to add to the mini-batch variances, specified as a positive scalar.

The software adds this constant to the mini-batch variances before normalization to ensure numerical stability and avoid division by zero.

Before R2023a: Epsilon must be greater than or equal to 1e-5.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Output Arguments

collapse all

Y — Normalized data

dlarray

Normalized data, returned as a dlarray. The outputY has the same underlying data type as the inputX.

If the input data X is a formatted dlarray,Y has the same dimension format as X. If the input data is not a formatted dlarray, Y is an unformatted dlarray with the same dimension order as the input data.

Algorithms

collapse all

Instance Normalization

The instance normalization operation normalizes the elements_xi_ of the input by first calculating the mean μI and variance_σI2_ over the spatial and time dimensions for each channel in each observation independently. Then, it calculates the normalized activations as

where ϵ is a constant that improves numerical stability when the variance is very small.

To allow for the possibility that inputs with zero mean and unit variance are not optimal for the operations that follow instance normalization, the instance normalization operation further shifts and scales the activations using the transformation

where the offset β and scale factor_γ_ are learnable parameters that are updated during network training.

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 data dimension.

The characters are:

For example, consider an array containing a batch of sequences where the first, second, and third dimensions correspond to channels, observations, and time steps, respectively. You can specify that this array has the format "CBT" (channel, batch, time).

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 theDataFormat argument.

For more information, see Deep Learning Data Formats.

Extended Capabilities

GPU Arrays

Accelerate code by running on a graphics processing unit (GPU) using Parallel Computing Toolbox™.

The instancenorm function supports GPU array input with these usage notes and limitations:

For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).

Version History

Introduced in R2021a

expand all

R2023a: Epsilon supports values less than 1e-5

The Epsilon option also supports positive values less than 1e-5.