Quadratic layer for actor or critic network
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
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 parameters of a
QuadraticLayer object are not learnable.
Name— Name of layer
'quadratic'(default) | character vector
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
Name is set to
'', then the software
automatically assigns a name to the layer at training time.
Description— Description of layer
'quadratic layer'(default) | character vector
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.
Create a quadratic layer that converts an input vector
U into a vector of quadratic monomials constructed from binary combinations of the elements of
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.