Build
Readouts¶
A readout maps collected reservoir states to outputs. Every readout is an ordinary linear layer underneath, so any reservoir family's states can feed any readout, and both training paths remain available: a one-pass algebraic solve, or gradient descent with any PyTorch optimizer.
The solver is a pluggable contract: a new readout implements
_fit_impl(states, targets) and inherits shape handling, validation, and
parameter copy-back from the ReadoutLayer base class. Several solvers ship
with the library — the default, RidgeReadoutLayer, fits ridge regression with
a direct Cholesky solve; CGReadoutLayer solves the same problem iteratively by
conjugate gradient; and SVDReadoutLayer, PinvReadoutLayer, and
IncrementalRidgeReadout cover rank-deficient, pseudo-inverse, and streaming
cases. Theory · Readout solvers
tabulates which to reach for.
-
Family-agnostic trainable maps — the name contract, ridge regression by conjugate gradient, bias and precision semantics, and the _fit_impl hook for custom solvers.
See also¶
- Train — both training paths in practice
- Theory · Readout solvers — the ridge problem and the conjugate-gradient solve