Node API (reservoirpy.node)#

Note

See the following guides to:

Simple tools for complex reservoir computing architectures.

The Node API features a simple implementation of computational graphs, similar to what can be found in other popular deep learning and differentiable calculus libraries. It is however simplified and made the most flexible possible by discarding the useless “fully differentiable operations” functionalities. If you wish to use learning rules making use of chain rule and full differentiability of all operators, ReservoirPy may not be the tool you need (actually, the whole paradigm of reservoir computing might arguably not be the tool you need).

The Node API is composed of a base Node class that can be described as a stateful recurrent operator able to manipulate streams of data. A Node applies a _step function on some data, and then stores the result in its state attribute. The _step() operation can be a function depending on the data, on the current state vector of the Node and on the Node parameters.

Nodes can also be connected together to form a Model. Models hold references to the connected nodes and make data flow from one node to the next, allowing to create deep models and other more complex architectures and computational graphs. Model is essentially a subclass of Node, that can also be connected to other nodes and models.

See the following guides to:

Node()

Generic Node ABC

TrainableNode()

Node that can be trained.

OnlineNode()

Node that can be trained in an online fashion.

ParallelNode()

Node that can be trained in parallel.