Skip to content

Commit 8dbc8e5

Browse files
Merge pull request #135 from BalzaniEdoardo/hess_approx
L-BFGS approximation to the Hessian and its inverse, targets parts of #116 and #3. Performance is on par with the optax implementation in our benchmarks, with minimal additive overhead.
2 parents 15e959b + bd09b85 commit 8dbc8e5

File tree

9 files changed

+1029
-68
lines changed

9 files changed

+1029
-68
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,5 @@ examples/data
1010
.idea
1111
.venv
1212
.DS_Store
13+
.devcontainer
14+
.benchmarks

benchmarks/levenberg-marquardt.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,9 @@ def compute(self, state, vector, options):
134134
def transpose(self, state, options):
135135
assert False
136136

137+
def conj(self, state, options):
138+
assert False
139+
137140
def allow_dependent_columns(self, operator):
138141
assert False
139142

optimistix/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
hestenes_stiefel as hestenes_stiefel,
6565
IndirectDampedNewtonDescent as IndirectDampedNewtonDescent,
6666
IndirectLevenbergMarquardt as IndirectLevenbergMarquardt,
67+
LBFGS as LBFGS,
6768
LearningRate as LearningRate,
6869
LevenbergMarquardt as LevenbergMarquardt,
6970
LinearTrustRegion as LinearTrustRegion,

optimistix/_custom_types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
SolverState = TypeVar("SolverState")
1111
SearchState = TypeVar("SearchState")
1212
DescentState = TypeVar("DescentState")
13+
HessianUpdateState = TypeVar("HessianUpdateState")
1314
Y = TypeVar("Y")
1415

1516
Fn: TypeAlias = Callable[[Y, Args], tuple[Out, Aux]]

optimistix/_solver/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
IndirectLevenbergMarquardt as IndirectLevenbergMarquardt,
2626
LevenbergMarquardt as LevenbergMarquardt,
2727
)
28+
from .limited_memory_bfgs import LBFGS as LBFGS
2829
from .nelder_mead import NelderMead as NelderMead
2930
from .newton_chord import Chord as Chord, Newton as Newton
3031
from .nonlinear_cg import (

0 commit comments

Comments
 (0)