-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introduce proxes. #37
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #37 +/- ##
==========================================
+ Coverage 95.26% 95.46% +0.20%
==========================================
Files 20 21 +1
Lines 359 375 +16
==========================================
+ Hits 342 358 +16
Misses 17 17 ☔ View full report in Codecov by Sentry. |
What is the benefit of having proximal maps here instead of Manopt.jl? Can they be used for anything other than optimization? |
I am not sure – they should not be defined in Manopt.jl, since that package should focus on optimization and not corresponding functions /cost/grad/...) my alternative would be to defined them in |
OK, but if we are going to standardize it maybe we should consider a bit more generic interface, maybe more similar to https://github.com/JuliaFirstOrder/ProximalOperators.jl ? |
That would add a dependency here, but I think that sounds like a good idea. |
Or do you think we should introduce our own generic interface here? Until now we do not do that for gradients of differentials or such, so why do it for proxes? Until now we just have a naming convention, how to find gradients / differentials / ... |
I wouldn't necessarily make that a dependency but an interface inspired by that package. We need manifold as an additional argument after all.
To be honest, I think we should also have such interface for gradients and differentials. I don't like our current convention, I just didn't have time to work on something better. |
But then maybe let's continue with introducing proxies also using the naming convention still, And sure I also am not that fond of the naming scheme – such an interface like ProximalOperators has would be nice, sure. |
OK, we can postpone it but I'd try implementing all proximal operators as methods of |
Ah, but then the interface would be breaking (and similarly for grad/diff/...)? Sure that would be fine with me. |
Yes, it would be a breaking change. |
Ok, let me do this one without a break – but I can open an issue and write down the design we have in mind here. |
…s formerly done in Manopt).
I will need this first in the examples, so this PR has to go first and should be finished by now |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have a few small comments but I'd like to take a look at it again after I understand how exactly you define the proximal map here.
Co-authored-by: Mateusz Baran <[email protected]>
Co-authored-by: Mateusz Baran <[email protected]>
…ds/ManifoldDiff.jl into kellertuer/introduce-proxes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Last batch of comments :). Everything else looks OK.
Co-authored-by: Mateusz Baran <[email protected]>
Oh my search-and-replace f->p_data was not careful enough there. Thanks for always being precise here :) |
Introduce the first proximal maps to this collection. I will surely add more docs and testing.
@mateuszbaran is it ok to also define proximal maps for basic functions (like the distance) here? Otherwise I can also defined them in
ManoptExamples.jl
, but I thought for such “elementary” functions like the distance it might be nice to have them here already.This PR will be accompanied by two PRs over on
ManoptExamples
(JuliaManifolds/ManoptExamples.jl#12) andManopt
(JuliaManifolds/Manopt.jl#331) to clean up the later a bit.