quadraticLayer

Quadratic layer for actor or critic network

Description

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 QuadraticLayer, see Train DDPG Agent to Control Double Integrator System.

Creation

Description

example

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'.

Properties

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 when you create the quadratic layer and stored 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.

Examples

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