Comments (6)
I'm doing some changes in the base classes, I will tackle this issue too.
from jaxopt.
Indeed, pre_update
is currently only used in run_iterator
and not in run
. I was a bit hesitant about this, I am not sure what are the right semantics here. If we add it to run
, then all solvers, including non-stochastic ones, will need a pre_update
option. Is it worth it for batch solvers?
Another option would be to apply pre_update
inside update
. This means that every solver with a pre_update
option would be in charge of calling it. This way, both run
and run_iterator
would use pre_update
as a result. And this way pre_update
doesn't 'leak' everywhere in the code base.
So the question is: do we make pre_update
an integral part of our solver API or not?
Any opinion on this would be welcome.
from jaxopt.
I may be misinterpreting the role of pre_update
(in particular, why it is significantly more useful in stochastic solvers).
My main use of the pre_update was tracking the progress of some running stats as well as how far along it is within the optimization (to know how much longer I have to wait). If pre_update is the only way to do this, I think it should be added everywhere, since tracking stats&progress seems pretty useful every time we have a solver. If we don't add it then I would put some sort of warning (or change the name?) in the OptaxSolver definition, because intuitively one would expect the pre_update to run if you give it to the OptaxSolver, whenever you call update.
Happy to chat more about it!
from jaxopt.
Moving the call to pre_update
to within OptaxSolver.update
sounds good. Do you want to do it?
from jaxopt.
Done in #29, opinions welcome!
from jaxopt.
Awesome! Thanks for solving it :)
from jaxopt.
Related Issues (20)
- OSQP solvers with fun set and no init_params have misleading error message HOT 8
- BoxOSQP does not work without equality constraints HOT 5
- Type precision issue in BoxOSQP HOT 10
- Garbage collection issues HOT 1
- Wrong failure diagnostic print outs from `ZoomLineSearch` under `vmap` HOT 3
- Attempted boolean conversion of traced array - for hager-zhang HOT 2
- Expression tree API like CVXPY HOT 3
- Unnecessary recompilation of _while_loop_lax HOT 8
- Add type annotations
- Consider switching to pyproject.toml
- OSQP crashing on unexpected params HOT 3
- `verbose=False` is not working as expected for `NonlinearCG` HOT 1
- Stochastic L-BFGS algorithm implementation
- Stopping condition 'madsen-nielsen' incorrect
- unit test failures on aarch64 linux with scipy 1.12
- `LevenbergMarquardt` implementation does not accept PyTree parameters
- diag(JTJ) can be more efficient
- JAXOPT Projected Gradient
- "invalid escape sequence" warning in `BoxOSQP` docstring
- Error when taking gradient wrt parameters in BoxOSQP
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jaxopt.