Main Content

scalingLayer

Scaling layer

    Description

    A scaling layer linearly scales and offsets the input data.

    Creation

    Description

    layer = scalingLayer creates a scaling layer.

    layer = scalingLayer(Name=Value) specifies options using one or more name-value arguments. For example, Scale=0.5 specifies to scale the input by 0.5.

    example

    Name-Value Arguments

    expand all

    Specify optional pairs of arguments as Name1=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 and 0.4, respectively.

    Scaling factor, specified as one of these values:

    • Numeric scalar — Scale all input values using the specified value.

    • Numeric array — Scale each element of the input using the specified array with implicit expansion.

    Scale and Offset 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 and Offset 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:

    • Numeric scalar — Offset all scaled input values using the specified value.

    • Numeric array — Offset each element of the scaled input using the specified array with implicit expansion.

    Scale and Offset 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 and Offset 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 and dlnetwork 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:

    • Numeric scalar — Scale all input values using the specified value.

    • Numeric array — Scale each element of the input using the specified array with implicit expansion.

    Scale and Offset 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 and Offset 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:

    • Numeric scalar — Offset all scaled input values using the specified value.

    • Numeric array — Offset each element of the scaled input using the specified array with implicit expansion.

    Scale and Offset 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 and Offset 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 and dlnetwork 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

    Extended Capabilities

    expand all

    C/C++ Code Generation
    Generate C and C++ code using MATLAB® Coder™.

    GPU Code Generation
    Generate CUDA® code for NVIDIA® GPUs using GPU Coder™.

    Version History

    Introduced in R2019a

    expand all