Main Content


Quadratic layer for actor or critic network


A QuadraticLayer is a deep neural network layer that takes an input vector and outputs a vector of quadratic monomials constructed from the input elements. 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].

The quadratic layer is useful when you need a layer whose output is some quadratic function of its inputs. For instance, inserting a QuadraticLayer into a network lets you recreate the structure of quadratic value functions such as those used in LQR controller design. 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'

  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×6

     1     2     4     3     6     9

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

Introduced in R2019a