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

Class SFA2Node


Get an input signal, expand it in the space of inhomogeneous polynomials of degree 2 and extract its slowly varying components.

The get_quadratic_form method returns the input-output

function of one of the learned unit as a QuadraticForm object. See the documentation of mdp.utils.QuadraticForm for additional information.

Reference:

More information about Slow Feature Analysis can be found in Wiskott, L. and Sejnowski, T.J., Slow Feature Analysis: Unsupervised Learning of Invariances, Neural Computation, 14(4):715-770 (2002).

Instance Methods [hide private]
 
__init__(self, input_dim=None, output_dim=None, dtype=None, include_last_sample=True, rank_deficit_method='none')
Initialize an object of type SFA2Node.
numpy.ndarray
_execute(self, x, n=None)
Compute the output of the slowest functions.
 
_set_input_dim(self, n)
 
_set_range(self)
 
_stop_training(self, debug=False)
 
_train(self, x, include_last_sample=None)
Training method.
numpy.ndarray
execute(self, x, n=None)
Compute the output of the slowest functions.
numpy.ndarray, numpy.ndarray, float
get_quadratic_form(self, nr)
Return the matrix H, the vector f and the constant c of the quadratic form 1/2 x'Hx + f'x + c that defines the output of the component 'nr' of the SFA node.
 
stop_training(self, debug=False)
Stop the training phase.
 
train(self, x, include_last_sample=None)
Training method.

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 SFANode
 
_check_train_args(self, x, *args, **kwargs)
Raises exception if time dimension does not have enough elements.
 
_init_cov(self)
 
_inverse(self, y)
 
get_eta_values(self, t=1)
Return the eta values of the slow components learned during the training phase. If the training phase has not been completed yet, call stop_training.
 
inverse(self, y)
Invert y.
 
set_rank_deficit_method(self, rank_deficit_method)
numpy.ndarray
time_derivative(self, x)
Compute the linear approximation of the time derivative
    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)
 
_get_supported_dtypes(self)
Return the list of dtypes supported by this node.
 
_get_train_seq(self)
 
_if_training_stop_training(self)
 
_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.
 
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.
 
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.
Instance Variables [hide private]
    Inherited from SFANode
  avg
Mean of the input data (available after training)
  d
Delta values corresponding to the SFA components (generalized eigenvalues). [See the docs of the get_eta_values method for more information]
  sf
Matrix of the SFA filters (available after training)
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, output_dim=None, dtype=None, include_last_sample=True, rank_deficit_method='none')
(Constructor)

 
Initialize an object of type SFA2Node.
Parameters:
  • input_dim (int) - The input dimensionality.
  • output_dim (int) - The output dimensionality.
  • dtype (numpy.dtype or str) - The datatype.
  • include_last_sample (bool) - If False the train method discards the last sample in every chunk during training when calculating the covariance matrix. The last sample is in this case only used for calculating the covariance matrix of the derivatives. The switch should be set to False if you plan to train with several small chunks. For an example, see the SFANode.__init__ method's docstring.
  • rank_deficit_method (str) - Possible values: 'none' (default), 'reg', 'pca', 'svd', 'auto' If not 'none', the stop_train method solves the SFA eigenvalue problem in a way that is robust against linear redundancies in the input data. This would otherwise lead to rank deficit in the covariance matrix, which usually yields a SymeigException ('Covariance matrices may be singular'). For a more detailed description, have a look at the SFANode's constructor docstring.
Overrides: object.__init__

_execute(self, x, n=None)

 
Compute the output of the slowest functions.
Parameters:
  • x (numpy.ndarray) - The time series data.
  • n (int) - The number of slowest components. If 'n' is an integer, then use the first 'n' slowest components.
Returns: numpy.ndarray
The output of the slowest functions.
Overrides: Node._execute

_set_input_dim(self, n)

 
Overrides: Node._set_input_dim

_set_range(self)

 
Overrides: SFANode._set_range

_stop_training(self, debug=False)

 
Overrides: Node._stop_training

_train(self, x, include_last_sample=None)

 
Training method.
Parameters:
  • x - The time series data.
  • include_last_sample - For the include_last_sample switch have a look at the SFANode.__init__ docstring.
Overrides: Node._train

execute(self, x, n=None)

 
Compute the output of the slowest functions.
Parameters:
  • x (numpy.ndarray) - The time series data.
  • n (int) - The number of slowest components. If 'n' is an integer, then use the first 'n' slowest components.
Returns: numpy.ndarray
The output of the slowest functions.
Overrides: Node.execute

get_quadratic_form(self, nr)

 
Return the matrix H, the vector f and the constant c of the quadratic form 1/2 x'Hx + f'x + c that defines the output of the component 'nr' of the SFA node.
Parameters:
  • nr - The component 'nr' of the SFA node.
Returns: numpy.ndarray, numpy.ndarray, float
The matrix H, the vector f and the constant c of the quadratic form.

is_invertible()
Static Method

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

stop_training(self, debug=False)

 

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, x, include_last_sample=None)

 
Training method.
Parameters:
  • x (numpy.ndarray) - The time series data.
  • include_last_sample (bool) - For the include_last_sample switch have a look at the SFANode.__init__ docstring.
Overrides: Node.train