Main Content


Quadratic layer for actor or critic network


A quadratic layer takes an input vector and outputs a vector of quadratic monomials constructed from the input elements. This layer is useful when you need a layer whose output is some quadratic function of its inputs. For example, to recreate the structure of quadratic value functions such as those used in LQR controller design.

For example, consider an input vector U = [u1 u2 u3]. For this input, a quadratic layer gives the output Y = [u1*u1 u1*u2 u2*u2 u1*u3 u2*u3 u3*u3]. For an example that uses a QuadraticLayer, see Train DDPG Agent to Control Double Integrator System.


The QuadraticLayer layer does not support inputs coming directly or indirectly from a featureInputLayer or sequenceInputLayer.

The parameters of a QuadraticLayer object are not learnable.




qLayer = quadraticLayer creates a quadratic layer with default property values.

qLayer = quadraticLayer(Name,Value) sets properties using name-value pairs. For example, quadraticLayer('Name','quadlayer') creates a quadratic layer and assigns the name 'quadlayer'.


expand all

Name of layer, specified as a character vector. To include a layer in a layer graph, you must specify a nonempty unique layer name. If you train a series network with this layer and Name is set to '', then the software automatically assigns a name to the layer at training time.

This property is read-only.

Description of layer, specified as a character vector. When you create the quadratic layer, you can use this property to give it a description that helps you identify its purpose.


collapse all

Create a quadratic layer that converts an input vector U into a vector of quadratic monomials constructed from binary combinations of the elements of U.

qLayer = quadraticLayer
qLayer = 
  QuadraticLayer with properties:

    Name: 'quadratic'

   Learnable Parameters
    No properties.

   State Parameters
    No properties.

  Show all properties

Confirm that the layer produces the expected output. For instance, for U = [u1 u2 u3], the expected output is [u1*u1 u1*u2 u2*u2 u1*u3 u2*u3 u3*u3].

predict(qLayer,[1 2 3])
ans = 1×3

     1     4     9

You can incorporate qLayer into an actor network or critic network for reinforcement learning.

Introduced in R2019a