Package mdp :: Package nodes :: Class EtaComputerNode
[hide private]
[frames] | no frames]

Class EtaComputerNode


Compute the eta values of the normalized training data.

The delta value of a signal is a measure of its temporal
variation, and is defined as the mean of the derivative squared,
i.e. ``delta(x) = mean(dx/dt(t)^2)``.  ``delta(x)`` is zero if
``x`` is a constant signal, and increases if the temporal variation
of the signal is bigger.

The eta value is a more intuitive measure of temporal variation,
defined as::

   eta(x) = T/(2*pi) * sqrt(delta(x))

If ``x`` is a signal of length ``T`` which consists of a sine function
that accomplishes exactly ``N`` oscillations, then ``eta(x)=N``.

``EtaComputerNode`` normalizes the training data to have unit
variance, such that it is possible to compare the temporal
variation of two signals independently from their scaling.

Reference: Wiskott, L. and Sejnowski, T.J. (2002).
Slow Feature Analysis: Unsupervised Learning of Invariances,
Neural Computation, 14(4):715-770.

Important: if a data chunk is tlen data points long, this node is
going to consider only the first tlen-1 points together with their
derivatives. This means in particular that the variance of the
signal is not computed on all data points. This behavior is
compatible with that of ``SFANode``.

This is an analysis node, i.e. the data is analyzed during training
and the results are stored internally.  Use the method
``get_eta`` to access them.

Instance Methods [hide private]
 
__init__(self, input_dim=None, dtype=None)
If the input dimension and the output dimension are unspecified, they will be set when the `train` or `execute` method is called for the first time.
 
_init_internals(self)
 
_set_input_dim(self, n)
 
_stop_training(self)
 
_train(self, data)
 
get_eta(self, t=1)
Return the eta values of the data received during the training phase.
 
stop_training(self)
Stop the training phase.
 
train(self, data)
Update the internal structures according to the input data `x`.

Inherited from unreachable.newobject: __long__, __native__, __nonzero__, __unicode__, next

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __setattr__, __sizeof__, __subclasshook__

    Inherited from Node
 
__add__(self, other)
 
__call__(self, x, *args, **kwargs)
Calling an instance of `Node` is equivalent to calling its `execute` method.
 
__repr__(self)
repr(x)
 
__str__(self)
str(x)
 
_check_input(self, x)
 
_check_output(self, y)
 
_check_train_args(self, x, *args, **kwargs)
 
_execute(self, x)
 
_get_supported_dtypes(self)
Return the list of dtypes supported by this node.
 
_get_train_seq(self)
 
_if_training_stop_training(self)
 
_inverse(self, x)
 
_pre_execution_checks(self, x)
This method contains all pre-execution checks.
 
_pre_inversion_checks(self, y)
This method contains all pre-inversion checks.
 
_refcast(self, x)
Helper function to cast arrays to the internal dtype.
 
_set_dtype(self, t)
 
_set_output_dim(self, n)
 
copy(self, protocol=None)
Return a deep copy of the node.
 
execute(self, x, *args, **kwargs)
Process the data contained in `x`.
 
get_current_train_phase(self)
Return the index of the current training phase.
 
get_dtype(self)
Return dtype.
 
get_input_dim(self)
Return input dimensions.
 
get_output_dim(self)
Return output dimensions.
 
get_remaining_train_phase(self)
Return the number of training phases still to accomplish.
 
get_supported_dtypes(self)
Return dtypes supported by the node as a list of :numpy:`dtype` objects.
 
has_multiple_training_phases(self)
Return True if the node has multiple training phases.
 
inverse(self, y, *args, **kwargs)
Invert `y`.
 
is_training(self)
Return True if the node is in the training phase, False otherwise.
 
save(self, filename, protocol=-1)
Save a pickled serialization of the node to `filename`.
 
set_dtype(self, t)
Set internal structures' dtype.
 
set_input_dim(self, n)
Set input dimensions.
 
set_output_dim(self, n)
Set output dimensions.
Static Methods [hide private]
    Inherited from Node
 
is_invertible()
Return True if the node can be inverted, False otherwise.
 
is_trainable()
Return True if the node can be trained, False otherwise.
Properties [hide private]

Inherited from object: __class__

    Inherited from Node
  _train_seq
List of tuples::
  dtype
dtype
  input_dim
Input dimensions
  output_dim
Output dimensions
  supported_dtypes
Supported dtypes
Method Details [hide private]

__init__(self, input_dim=None, dtype=None)
(Constructor)

 
If the input dimension and the output dimension are
unspecified, they will be set when the `train` or `execute`
method is called for the first time.
If dtype is unspecified, it will be inherited from the data
it receives at the first call of `train` or `execute`.

Every subclass must take care of up- or down-casting the internal
structures to match this argument (use `_refcast` private
method when possible).

Overrides: object.__init__
(inherited documentation)

_init_internals(self)

 

_set_input_dim(self, n)

 
Overrides: Node._set_input_dim

_stop_training(self)

 
Overrides: Node._stop_training

_train(self, data)

 
Overrides: Node._train

get_eta(self, t=1)

 
Return the eta values of the data received during the training
phase. If the training phase has not been completed yet, call
stop_training.

:Arguments:
   t
     Sampling frequency in Hz.

     The original definition in (Wiskott and Sejnowski, 2002)
     is obtained for ``t=self._tlen``, while for ``t=1`` (default),
     this corresponds to the beta-value defined in
     (Berkes and Wiskott, 2005).

stop_training(self)

 
Stop the training phase.

By default, subclasses should overwrite `_stop_training` to implement
this functionality. The docstring of the `_stop_training` method
overwrites this docstring.

Overrides: Node.stop_training

train(self, data)

 
Update the internal structures according to the input data `x`.

`x` is a matrix having different variables on different columns
and observations on the rows.

By default, subclasses should overwrite `_train` to implement their
training phase. The docstring of the `_train` method overwrites this
docstring.

Note: a subclass supporting multiple training phases should implement
the *same* signature for all the training phases and document the
meaning of the arguments in the `_train` method doc-string. Having
consistent signatures is a requirement to use the node in a flow.

Overrides: Node.train