reservoirpy.nodes.Output#
- class reservoirpy.nodes.Output(name: str | None = None)[source]#
Convenience node which can be used to add an output to a model.
For instance, this node can be connected to a reservoir within a model to inspect its states.
- Parameters:
name (str, optional) – Node name.
Example
We can use the
Outputnode to probe the hidden states of Reservoir in an Echo State Network:>>> import numpy as np >>> from reservoirpy.nodes import Reservoir, Ridge, Output >>> reservoir = Reservoir(100) >>> readout = Ridge(name="readout") >>> probe = Output(name="reservoir-states") >>> esn = reservoir >> readout & reservoir >> probe >>> _ = esn.initialize(np.ones((1,1)), np.ones((1,1)))
When running the model, states can then be retrieved as an output:
>>> data = np.ones((10, 1)) >>> outputs = esn.run(data) >>> states = outputs["reservoir-states"]
Methods
__init__([name])initialize(x)Define input and output dimensions, and instantiate variables.
predict([x, iters, workers])Alias for
run()reset()Reset all Node state
run([x, iters, workers])Run the Node on a sequence of data.
step([x])Call the Node function on a single step of data and update the state of the Node.
Attributes
Expected dimension of the Node input.
Optional name of the Node.
Expected dimension of the Node input.
True if the Node has been initialized
Current state of the Node.
- initialize(
- x: array(t, d) | array(s, t, d) | ~typing.Sequence[array(t, d)] | array(d),
Define input and output dimensions, and instantiate variables.
Only called once, before fitting or running the node.
- Parameters:
x (array of shape (input_dim,) or (timestep, input_dim)) – Input data to the node.
y (None) – Training data to the node. As it is not a trainable node,
yis expected to beNone.
- predict(
- x: array(t, d) | array(s, t, d) | ~typing.Sequence[array(t, d)] | None = None,
- iters: int | None = None,
- workers=1,
Alias for
run()Run the Node on a sequence of data. Can update the state of the Node several times.
- Parameters:
x (array-like of shape ([n_inputs,] timesteps, input_dim) or list of) – arrays of shape (timesteps, input_dim), optional A sequence of data of shape (timesteps, features).
iters (int, optional) – If
xisNone, a dimensionless timeseries of lengthitersis used instead.
- Returns:
A sequence of output vectors.
- Return type:
array of shape ([n_inputs,] timesteps, output_dim) or list of arrays
- reset() dict[str, ndarray][source]#
Reset all Node state
- Returns:
dict[str, np.array]
- Return type:
previous state of the Node.
- run(
- x: array(t, d) | array(s, t, d) | ~typing.Sequence[array(t, d)] | None = None,
- iters: int | None = None,
- workers=1,
Run the Node on a sequence of data. Can update the state of the Node several times.
- Parameters:
x (array-like of shape ([n_inputs,] timesteps, input_dim) or list of arrays of shape (timesteps, input_dim), optional) – A timeseries, array of shape (timesteps, features), or a sequence of timeseries. Input of the Node.
iters (int, optional) – If
xisNone, a dimensionless timeseries of lengthitersis used instead.workers (int, default to 1) – Number of workers used for parallelization. If set to -1, all available workers (threads or processes) are used.
- Returns:
A sequence of output vectors.
- Return type:
array of shape ([n_inputs,] timesteps, output_dim) or list of arrays
- step(x: array(d) | None = None)[source]#
Call the Node function on a single step of data and update the state of the Node.
- Parameters:
x (array of shape (input_dim,), optional) – One single step of input data. If None, an empty array is used instead and the Node is assumed to have an input_dim of 0
- Returns:
An output vector.
- Return type:
array of shape (output_dim,)