User guide

These pages explain the concepts behind the library and the choices that the API reference does not spell out. Start with How the library fits together, the map of the package; the other pages can be read in any order.

How the library fits together

The three levels (functions, layers, models), the shapes flowing through a network, and the conventions: float64, two gradient paths, parametrizations.

How the library fits together
Layers and parametrizations

BiMap, ReEig, LogEig and their equations; static vs dynamic parametrization of the orthonormal and SPD parameters.

Layers and parametrizations
Models and their options

Which model to use, the constructor arguments grouped by role, and the configurations of published experiments.

Models and their options
Geometries

The Riemannian geometries on the SPD manifold, their means and dispersions, and how to pick one.

Geometries on the SPD manifold
Batch normalization

How the SPD batch normalization layers centre, rescale and re-bias a batch, and their training/evaluation behaviour.

Batch normalization
Residual networks

RResNet residual blocks: spectral vector field, affine-invariant (unit step) or log-Euclidean exponential map.

Riemannian residual networks
Numerical and optimization techniques

Daleckii–Krein backwards, Sylvester equations, means as iterations, implicit differentiation, parametrizations, batch normalization and residual-step mechanics, precision — with their equations.

Numerical and optimization techniques