ScalingLayer - Scaling layer - MATLAB (original) (raw)

Description

A scaling layer linearly scales and offsets the input data.

Creation

Syntax

Description

`layer` = scalingLayer creates a scaling layer.

`layer` = scalingLayer([Name=Value](#namevaluepairarguments)) specifies options using one or more name-value arguments. For example,Scale=0.5 specifies to scale the input by0.5.

example

Name-Value Arguments

expand all

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.

Example: scalingLayer(Scale=0.1,Offset=0.4) creates a scaling layer that scales and offsets the input using values of 0.1 and0.4, respectively.

Scaling factor, specified as one of these values:

Scale andOffset must have sizes such that the size of Scale.*X + Offset matches the size of X, where X is the layer input. (since R2025a)

Before R2025a: If Scale andOffset are both numeric arrays, then they must be the same size.

This argument sets the Scale property.

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

Since R2025a

Offset, specified as one of these values:

Scale andOffset must have sizes such that the size of Scale.*X + Offset matches the size of X, where X is the layer input. (since R2025a)

Before R2025a: If Scale andOffset are both numeric arrays, then they must be the same size.

Before R2025a: Use Bias instead.

This argument sets the Offset property.

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

Layer name, specified as a character vector or a string scalar. For Layer array input, the trainnet anddlnetwork functions automatically assign names to unnamed layers.

This argument sets the Name property.

Data Types: char | string

Properties

expand all

Scaling

Scaling factor, specified as one of these values:

Scale andOffset must have sizes such that the size of Scale.*X + Offset matches the size of X, where X is the layer input. (since R2025a)

Before R2025a: If Scale andOffset are both numeric arrays, then they must be the same size.

The ScalingLayer object stores this property as double type.

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

Since R2025a

Offset, specified as one of these values:

Scale andOffset must have sizes such that the size of Scale.*X + Offset matches the size of X, where X is the layer input. (since R2025a)

Before R2025a: If Scale andOffset are both numeric arrays, then they must be the same size.

Before R2025a: Use Bias instead.

The ScalingLayer object stores this property as double type.

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

Layer

Layer name, specified as a character vector or a string scalar. For Layer array input, the trainnet anddlnetwork functions automatically assign names to unnamed layers.

The ScalingLayer object stores this property as a character vector.

Data Types: char | string

This property is read-only.

One-line description of the layer, stored as 'Scaling'. This description appears when you display a Layer array and when you use the analyzeNetwork function.

This property is read-only.

Type of the layer, stored as 'Scaling'. The type appears when you display a Layer array and when you use the analyzeNetwork function.

Data Types: char

This property is read-only.

Number of inputs to the layer, stored as 1. This layer accepts a single input only.

Data Types: double

This property is read-only.

Input names, stored as {'in'}. This layer accepts a single input only.

Data Types: cell

This property is read-only.

Number of outputs from the layer, stored as 1. This layer has a single output only.

Data Types: double

This property is read-only.

Output names, stored as {'out'}. This layer has a single output only.

Data Types: cell

Examples

collapse all

Create a scaling layer that scales the input with a factor of 0.1 and adds an offset of 0.4.

layer = scalingLayer(Scale=0.1,Offset=0.4);

Include a scaling layer in a layer array.

layers = [ featureInputLayer(1) fullyConnectedLayer(400) reluLayer fullyConnectedLayer(300) reluLayer fullyConnectedLayer(1) tanhLayer scalingLayer(Scale=0.1,Offset=0.4)];

To scale and offset each element of the input using different values, specify the scale and offset using numeric arrays.

Create a scaling layer that scales and offsets the input using the scaling and offset values [1 2 3]' and [0.1 0.2 0.3]', respectively.

layer = scalingLayer(Scale=[1 2 3]',Bias=[0.1 0.2 0.3]');

Include a scaling layer with the same scale and offset in a layer array. In this layer array, the output size of the fully connected layer is 3 (and in turn, the subsequent tanh layer), so the scaling layer receives a 3-by-N array, where N is the batch size. The scaling layer transforms each 3-by-1 vector in its input using implicit expansion.

layers = [ featureInputLayer(1) fullyConnectedLayer(400) reluLayer fullyConnectedLayer(300) reluLayer fullyConnectedLayer(3) tanhLayer scalingLayer(Scale=[1 2 3]',Bias=[0.1 0.2 0.3]')];

Algorithms

expand all

A scaling layer linearly scales and offsets the input data.

The scaling and offset operation is given by Y = Scale.*X + Offset, where X is the layer input. The scaling operation supports implicit expansion. That is, the layer automatically adjusts the dimensionsScale and Offset so that it has the same size as the input during the layer operation.

This means you can simplify your code by using arrays of smaller sizes forScale and Offset, or create a layer that processes data independently over different dimensions.

Scale andOffset must have sizes such that the size of Scale.*X + Offset matches the size of X, where X is the layer input. (since R2025a)

Before R2025a: If Scale andOffset are both numeric arrays, then they must be the same size.

Layers in a layer array or layer graph pass data to subsequent layers as formatted dlarray objects. The format of a dlarray object is a string of characters in which each character describes the corresponding dimension of the data. The format consists of one or more of these characters:

For example, you can describe 2-D image data that is represented as a 4-D array, where the first two dimensions correspond to the spatial dimensions of the images, the third dimension corresponds to the channels of the images, and the fourth dimension corresponds to the batch dimension, as having the format "SSCB" (spatial, spatial, channel, batch).

ScalingLayer objects apply an element-wise operation and support input data of any format. The layer does not add or remove any dimensions, so it outputs data with the same format as its input data.

Extended Capabilities

Version History

Introduced in R2019a

expand all

This layer now requires Deep Learning Toolbox™ only. In previous releases, this layer also required Reinforcement Learning Toolbox™.

There are some changes to the layer: