Skip to content
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

Implement a ManifoldEuclideanGradientObjective #217

Closed
kellertuer opened this issue Feb 14, 2023 · 1 comment · Fixed by #286
Closed

Implement a ManifoldEuclideanGradientObjective #217

kellertuer opened this issue Feb 14, 2023 · 1 comment · Fixed by #286

Comments

@kellertuer
Copy link
Member

I am not yet sure how to provide this easily in the high-end interfaces, but with the new structure in Manopt.jl 0.4 it is easy to provide a ManifoldEuclideanGradientObjective, that is a cost function $f$ together with its Euclidean gradient (usually called egrad in Manopt), since every gradient call would just be encapsulated in a projection onto the tangent space and a change_representer call.

The main task here is a nice way to handle this in the high-level interfaces. One way could be to extend the evaluation types as follows:

  • Introduce AbstractAllocatingEvaluation and AbstractInplaceEvaluation as intermediate types that the current ones inherit from
  • Introduce further subtypes AllocatingEuclideanEvaluation and InplaceEuclideanEvaluation

this makes it easy to specify that gradients (and later Hessians) are defined in the Embedding/Euclidean sense and the corresponding Objectives should be taken. One could maybe even just adapt the ManifoldGradientObjective in this way without introducing a new objective.

@kellertuer
Copy link
Member Author

Oh, this one might require that change_representer is moved to ManifoldsBase.jl

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant