Robot Simulator of the Robotics Group for Self-Organization of Control: Elman Class Reference

- Main Page
- Namespaces
- Classes
- Files
- Directories
- Related Pages
- Examples

- Search for |

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# Elman Class Reference

Multilayer Neural Network with context neurons (after Elman and Jordan) Example of 2 hidden layer network with both, elman and jordan context units. More...

`#include <elman.h>`

Inherits MultiLayerFFNN.

Inheritance diagram for Elman:

[legend]
Collaboration diagram for Elman:

[legend]
List of all members.

## Public Member Functions
| Elman (double eps, const std::vector< Layer > &layers, bool useElman, bool useJordan=false, bool useBypass=false)
virtual | ~Elman ()
virtual void | init (unsigned int inputDim, unsigned int outputDim, double unit_map=0.0, RandGen *randGen=0)
| initialisation of the network with the given number of input and output units
virtual const matrix::Matrix | process (const matrix::Matrix &input)
| passive processing of the input (this will be different for every input, since it is a recurrent network)
virtual const matrix::Matrix | learn (const matrix::Matrix &input, const matrix::Matrix &nom_output, double learnRateFactor=1)
| performs learning and returns the network output before learning
virtual NetUpdate | weightIncrement (const matrix::Matrix &xsi)
| determines the weight and bias updates
virtual NetUpdate | weightIncrementBlocked (const matrix::Matrix &xsi_, int blockedlayer, int blockfrom, int blockto)
| like weightIncrement but with blocked backprop flow for some neurons.
virtual void | updateWeights (const NetUpdate &updates)
| applies the weight increments to the weight (and bias) matrices with the learningrate and the learnRateFactor
void | damp (double damping)
| damps the weights and the biases by multiplying (1-damping)
bool | store (FILE *f) const
| stores the layer binary into file stream
bool | restore (FILE *f)
| restores the layer binary from file stream
virtual paramkey | getName () const
| return the name of the object
virtual iparamkeylist | getInternalParamNames () const
| The list of the names of all internal parameters given by getInternalParams().
virtual iparamvallist | getInternalParams () const
virtual ilayerlist | getStructuralLayers () const
| Specifies which parameter vector forms a structural layer (in terms of a neural network) The ordering is important.
virtual iconnectionlist | getStructuralConnections () const
| Specifies which parameter matrix forms a connection between layers (in terms of a neural network) The orderning is not important.
## Protected Attributes
matrix::Matrix | elmanWeights
matrix::Matrix | elmanContext
matrix::Matrix | jordanWeights
matrix::Matrix | jordanContext
bool | useElman
bool | useJordan

## Detailed Description

Multilayer Neural Network with context neurons (after Elman and Jordan) Example of 2 hidden layer network with both, elman and jordan context units.

Precondition:
  { +--<-----O O O | | | | | H H H | | | | | | | | | | | | | H H H ----->-----+ 1:1 fixed connections (time delayed) | >->-/| | |\-<-< | | / / / | | | \ \ \ | | J J J I I I E E E | +-^-^-^ ^-^-^--<--+ }

## Constructor & Destructor Documentation

Elman | ( | double | eps,
|  | const std::vector< Layer > & | layers,
|  | bool | useElman,
|  | bool | useJordan = `false`,
|  | bool | useBypass = `false` |
| ) |  |  | `[inline]`

Parameters:

  | eps | learning rate
  | layers | Layer description (the input layer is not specified (always linear))
  | lambda | self-recurrent feedback strength of context neurons

virtual ~Elman | ( |  | ) | `[inline, virtual]`

## Member Function Documentation

void damp | ( | double | damping | ) | `[virtual]`

damps the weights and the biases by multiplying (1-damping)

Reimplemented from MultiLayerFFNN.

Inspectable::iparamkeylist getInternalParamNames | ( |  | ) | const`[virtual]`

The list of the names of all internal parameters given by getInternalParams().

The naming convention is "v[i]" for vectors and "A[i][j]" for matrices, where i, j start at 0.

Returns:
  : list of keys

Reimplemented from MultiLayerFFNN.

Inspectable::iparamvallist getInternalParams | ( |  | ) | const`[virtual]`

Returns:
  : list of values

Reimplemented from MultiLayerFFNN.

virtual paramkey getName | ( |  | ) | const`[inline, virtual]`

return the name of the object

Reimplemented from Configurable.

Inspectable::iconnectionlist getStructuralConnections | ( |  | ) | const`[virtual]`

Specifies which parameter matrix forms a connection between layers (in terms of a neural network) The orderning is not important.

Returns:
  : list of layer names with dimension

Reimplemented from MultiLayerFFNN.

Inspectable::ilayerlist getStructuralLayers | ( |  | ) | const`[virtual]`

Specifies which parameter vector forms a structural layer (in terms of a neural network) The ordering is important.

The first entry is the input layer and so on.

Returns:
  : list of layer names with dimension

Reimplemented from MultiLayerFFNN.

void init | ( | unsigned int | inputDim,
|  | unsigned int | outputDim,
|  | double | unit_map = `0.0`,
|  | RandGen * | randGen = `0` |
| ) |  |  | `[virtual]`

initialisation of the network with the given number of input and output units

Reimplemented from MultiLayerFFNN.

const Matrix learn | ( | const matrix::Matrix & | input,
|  | const matrix::Matrix & | nom_output,
|  | double | learnRateFactor = `1` |
| ) |  |  | `[virtual]`

performs learning and returns the network output before learning

Reimplemented from MultiLayerFFNN.

const Matrix process | ( | const matrix::Matrix & | input | ) | `[virtual]`

passive processing of the input (this will be different for every input, since it is a recurrent network)

Reimplemented from MultiLayerFFNN.

bool restore | ( | FILE * | f | ) | `[virtual]`

restores the layer binary from file stream

Reimplemented from MultiLayerFFNN.

bool store | ( | FILE * | f | ) | const`[virtual]`

stores the layer binary into file stream

Reimplemented from MultiLayerFFNN.

void updateWeights | ( | const NetUpdate & | updates | ) | `[virtual]`

applies the weight increments to the weight (and bias) matrices with the learningrate and the learnRateFactor

NetUpdate weightIncrement | ( | const matrix::Matrix & | xsi | ) | `[virtual]`

determines the weight and bias updates

NetUpdate weightIncrementBlocked | ( | const matrix::Matrix & | xsi_,
|  | int | blockedlayer,
|  | int | blockfrom,
|  | int | blockto |
| ) |  |  | `[virtual]`

like weightIncrement but with blocked backprop flow for some neurons.

Parameters:

  | blockedlayer | index of layer with blocked neurons
  | blockfrom | index of neuron in blockedlayer to start blocking
  | blockto | index of neuron in blockedlayer to end blocking (if -1 then to end) (not included)

## Member Data Documentation

matrix::Matrix elmanContext`[protected]`

matrix::Matrix elmanWeights`[protected]`

matrix::Matrix jordanContext`[protected]`

matrix::Matrix jordanWeights`[protected]`

bool useElman`[protected]`

bool useJordan`[protected]`

The documentation for this class was generated from the following files:

- elman.h
- elman.cpp