Drivers API Reference¶
This module contains reservoir drivers that define the dynamics of the reservoir.
Driver Base Class¶
DriverBase ¶
Bases: Module, ABC
Base class dictating API for all implemented reservoir drivers.
Attributes:
| Name | Type | Description |
|---|---|---|
res_dim |
int
|
Reservoir dimensionxe |
dtype |
Float
|
Dtype for model, jnp.float64 or jnp.float32. |
Methods:
| Name | Description |
|---|---|
advance |
Advance reservoir according to proj_vars. |
batch_advance |
Advance batch of reservoir states according to proj_vars. |
Ensure reservoir dim and dtype are correct type.
Source code in src/orc/drivers.py
advance
abstractmethod
¶
Advance the reservoir given projected inputs and current state.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
proj_vars
|
Array
|
Projected inputs to reservoir. |
required |
res_state
|
Array
|
Initial reservoir state. |
required |
Returns:
| Type | Description |
|---|---|
Array
|
Updated reservoir state, (shape=(res_dim,)). |
Source code in src/orc/drivers.py
batch_advance ¶
Batch advance the reservoir given projected inputs and current state.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
proj_vars
|
Array
|
Reservoir projected inputs. |
required |
res_state
|
Array
|
Reservoir state. |
required |
Returns:
| Type | Description |
|---|---|
Array
|
Updated reservoir state. |
Source code in src/orc/drivers.py
__call__ ¶
Advance reservoir state.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
proj_vars
|
Array
|
Reservoir projected inputs, (shape=(chunks, res_dim) or shape=(seq_len, chunks, res_dim)). |
required |
res_state
|
Array
|
Current reservoir state, (shape=(chunks, res_dim) or shape=(seq_len, chunks, res_dim)). |
required |
Returns:
| Type | Description |
|---|---|
Array
|
Sequence of reservoir states, (shape=(chunks, res_dim,) or shape=(seq_len, chunks, res_dim)). |
Source code in src/orc/drivers.py
ESN Driver¶
ParallelESNDriver ¶
ParallelESNDriver(res_dim: int, leak: float = 0.6, spectral_radius: float = 0.8, density: float = 0.02, bias: float = 1.6, dtype: Float = float64, chunks: int = 1, mode: str = 'discrete', time_const: float = 50.0, *, seed: int, use_sparse_eigs: bool = True, eigenval_batch_size: int = None)
Bases: DriverBase
Standard implementation of ESN reservoir with tanh nonlinearity.
Attributes:
| Name | Type | Description |
|---|---|---|
res_dim |
int
|
Reservoir dimension. |
wr |
Array
|
Reservoir update matrix, (shape=(chunks, res_dim, res_dim,)). |
leak |
float
|
Leak rate parameter. |
spectral_radius |
float
|
Spectral radius of wr. |
density |
float
|
Density of wr. |
bias |
float
|
Additive bias in tanh nonlinearity. |
chunks |
int
|
Number of parallel reservoirs. |
mode |
str
|
Mode of reservoir update, either "discrete" or "continuous". |
time_const |
float
|
Time constant for continuous mode. |
dtype |
Float
|
Dtype, default jnp.float64. |
Methods:
| Name | Description |
|---|---|
advance |
Updated reservoir state. |
__call__ |
Batched or single update to reservoir state. |
Initialize weight matrices.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
res_dim
|
int
|
Reservoir dimension. |
required |
leak
|
float
|
Leak rate parameter. |
0.6
|
spectral_radius
|
float
|
Spectral radius of wr. |
0.8
|
density
|
float
|
Density of wr. |
0.02
|
bias
|
float
|
Additive bias in tanh nonlinearity. |
1.6
|
chunks
|
int
|
Number of parallel reservoirs. |
1
|
mode
|
str
|
Mode of reservoir update, either "discrete" or "continuous". |
'discrete'
|
time_const
|
float
|
Time constant for continuous mode. Ignored in discrete mode. |
50.0
|
dtype
|
Float
|
Dtype, default jnp.float64. |
float64
|
seed
|
int
|
Random seed for generating the PRNG key for the reservoir computer. |
required |
use_sparse_eigs
|
bool
|
Whether to use sparse eigensolver for setting the spectral radius of wr. Default is True, which is recommended to save memory and compute time. If False, will use dense eigensolver which may be more accurate. |
True
|
eigenval_batch_size
|
int
|
Size of batches when batch_eigenvals. Default is None, which means no batch eigenvalue computation. |
None
|
Source code in src/orc/drivers.py
162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 | |
advance ¶
Advance the reservoir state.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
proj_vars
|
Array
|
Reservoir projected inputs, (shape=(chunks, res_dim,)). |
required |
res_state
|
Array
|
Reservoir state, (shape=(chunks, res_dim,)). |
required |
Returns:
| Name | Type | Description |
|---|---|---|
res_next |
Array
|
Reservoir state, (shape=(chunks, res_dim,)). |