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

Class OnlineTimeDiffNode


Compute the discrete time derivative of the input using backward difference approximation:

dx(n) = x(n) - x(n-1), where n is the total number of input samples observed during training.

This is an online learnable node that uses a buffer to store the previous input sample = x(n-1). The node's train method updates the buffer. The node's execute method returns the time difference using the stored buffer as its previous input sample x(n-1).

This node supports both "incremental" and "batch" training types.


Example

If the training and execute methods are called sample by sample incrementally::
train(x[1]), y[1]=execute(x[1]), train(x[2]), y[2]=execute(x[2]), ...,
then::
y[1] = x[1] y[2] = x[2] - x[1] y[3] = x[3] - x[2] ...
If training and execute methods are called block by block::
train([x[1], x[2], x[3]]), [y[3], y[4], y[5]] = execute([x[3], x[4], x[5]])
then::
y[3] = x[3] - x[2] y[4] = x[4] - x[3] y[5] = x[5] - x[4]

Note that the stored buffer is still = x[2]. Only train() method changes the state of the node. execute's input data is always assumed to start at get_current_train_iteration() time step.

Instance Methods [hide private]
 
__init__(self, input_dim=None, output_dim=None, dtype=None, numx_rng=None)
Initializes an object of type 'OnlineTimeDiffNode'.
 
_check_params(self, x)
 
_execute(self, x)
Returns the time difference.
 
_train(self, x)
Update the buffer.
numpy.ndarray
execute(self, x)
Returns the time difference.
 
train(self, x)
Update the buffer.

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 PreserveDimOnlineNode
 
_set_input_dim(self, n)
 
_set_output_dim(self, n)
    Inherited from OnlineNode
 
__add__(self, other)
 
__repr__(self)
repr(x)
 
_check_input(self, x)
 
_get_supported_training_types(self)
Return the list of training types supported by this node.
 
_get_train_seq(self)
 
_pre_execution_checks(self, x)
This method contains all pre-execution checks. It can be used when a subclass defines multiple execution methods.
 
_pre_inversion_checks(self, y)
This method contains all pre-inversion checks.
 
_set_numx_rng(self, rng)
 
get_current_train_iteration(self)
Return the index of the current training iteration.
 
get_numx_rng(self)
Return input dimensions.
 
set_numx_rng(self, rng)
Set numx random number generator. Note that subclasses should overwrite self._set_numx_rng when needed.
 
set_training_type(self, training_type)
Sets the training type
 
stop_training(self, *args, **kwargs)
Stop the training phase.
    Inherited from Node
 
__call__(self, x, *args, **kwargs)
Calling an instance of Node is equivalent to calling its execute method.
 
__str__(self)
str(x)
 
_check_output(self, y)
 
_check_train_args(self, x, *args, **kwargs)
 
_get_supported_dtypes(self)
Return the list of dtypes supported by this node.
 
_if_training_stop_training(self)
 
_inverse(self, x)
 
_refcast(self, x)
Helper function to cast arrays to the internal dtype.
 
_set_dtype(self, t)
 
_stop_training(self, *args, **kwargs)
 
copy(self, protocol=None)
Return a deep copy of the node.
 
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. If filename is None, return a string.
 
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]
 
is_invertible()
Return True if the node can be inverted, False otherwise.
    Inherited from Node
 
is_trainable()
Return True if the node can be trained, False otherwise.
Properties [hide private]

Inherited from object: __class__

    Inherited from OnlineNode
  _train_seq
List of tuples:
  numx_rng
Numpy seeded random number generator
  training_type
Training type (Read only)
    Inherited from Node
  dtype
dtype
  input_dim
Input dimensions
  output_dim
Output dimensions
  supported_dtypes
Supported dtypes
Method Details [hide private]

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

 
Initializes an object of type 'OnlineTimeDiffNode'.
Parameters:
  • input_dim (int) - The input dimensionality.
  • output_dim (int) - The output dimensionality.
  • dtype (numpy.dtype or str) - The datatype.
  • numx_rng - Random number generator.
Overrides: object.__init__

_check_params(self, x)

 
Overrides: OnlineNode._check_params

_execute(self, x)

 
Returns the time difference.

:param x: The array to compute a time difference on.
:type x: numpy.ndarray

:return: The difference array, which is one element shorter, when compared
    to the supplied array. This follows directly from the method used.
:rtype: numpy.ndarray

Overrides: Node._execute

_train(self, x)

 
Update the buffer.

Overrides: Node._train

execute(self, x)

 
Returns the time difference.
Parameters:
  • x (numpy.ndarray) - The array to compute a time difference on.
Returns: numpy.ndarray
The difference array, which is one element shorter, when compared to the supplied array. This follows directly from the method used.
Overrides: Node.execute

is_invertible()
Static Method

 
Return True if the node can be inverted, False otherwise.
Overrides: Node.is_invertible
(inherited documentation)

train(self, x)

 
Update the buffer.
Overrides: Node.train