neuralqx.optimizer.solvers.types module¶
- class ConjugateGradient(name='Conjugate Gradient')¶
Bases:
SolverConfigUse Conjugate Gradient iteration to solve Ax = b.
- class PseudoInverseSmooth(name='Pseudo-Inverse Smooth Solver')¶
Bases:
SolverConfigNetKet Doc:
Solve the linear system by building a pseudo-inverse from the eigendecomposition obtained from
jax.numpy.linalg.eigh().The eigenvalues \(\lambda_i\) smaller than \(r_\textrm{cond} \lambda_\textrm{max}\) are truncated (where \(\lambda_\textrm{max}\) is the largest eigenvalue).
The eigenvalues are further smoothed with another filter, originally introduced in Medvidovic, Sels arXiv:2212.11289 (2022), given by the following equation
\[\tilde\lambda_i^{-1}=\frac{\lambda_i^{-1}}{1+\big(\epsilon\frac{\lambda_\textrm{max}}{\lambda_i}\big)^6}\]
- class PseudoInverse(name='Pseudo-Inverse Solver')¶
Bases:
SolverConfigSolve the linear system using jax’s implementation of the pseudo-inverse.
- class SingularValueDecomposition(name='Singular Value Decomposition')¶
Bases:
SolverConfigSolve the linear system using Singular Value Decomposition.
- class Cholesky(name='Cholesky')¶
Bases:
SolverConfigSolve the linear system using a Cholesky Factorisation.
- class LU(name='LU')¶
Bases:
SolverConfigSolve the linear system using a LU Factorisation.
- class DefaultSolver(name='Default Solver')¶
Bases:
SolverConfigSolve the linear system. Internally uses
jax.numpy.solve().