TODO:
    ☐ Test GPU support.
    ADAM:
        ☐ Computation in framework rather than NumPy.
        ☐ In-place updates.

Features:
    ☐ Exclusion mechanism for variables by prefixing with "-".
    ☐ Centralise warning messages.


＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿
Archive:
 ✓ Rename `get_vars` to `get_latents`: depr warning. @done (21-06-22 14:20) @project(TODO)
 ✓ Make clear that differentiable assignment sets the _latent_ representation: assign_latent function. @done (21-06-22 14:20) @project(TODO)
 ✓ Refactor tests to use PyTest: remove raises, fixtures, and parametrisation. @high @done (21-06-22 12:19) @project(Refactor)
 ✓ PSD matrix: parametrise _positive_ factor and embed in structured matrix object @done (20-02-20 13:48) @project(Features / Variables)
 ✓ Orthogonal matrix: do not parametrise diagonal of triangular matrix @done (20-02-20 13:48) @project(Features / Variables)
 ✓ PSD matrix @high @done (20-01-03 13:03) @project(Features / Variables)
 ✓ Orthogonal matrix @high @done (20-01-03 13:03) @project(Features / Variables)
 ✓ Lower triangular matrix @high @done (20-01-03 13:03) @project(Features / Variables)
 ✓ Sequential @high @started @done (19-11-07 16:13) @project(Features)
 ✓ README @done (19-11-07 16:13) @project(Features)
 ✓ README @done (19-11-07 16:13) @project(Features)
 ✓ Parametrised @high @started @done (19-11-07 16:13) @project(Features)
 ✓ Implementation @done (19-11-07 15:32) @project(Features)
 ✓ Implementation @done (19-11-07 15:31) @project(Features)
 ✓ Add Adam optimiser. @high @done (19-11-07 15:31) @project(Features)
 ✓ Unify PyTorch optimiser with NumPy one? @done (19-07-09 22:32) @project(Refactor)
