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

Sketch change metric. #423

Merged
merged 49 commits into from
Sep 22, 2021
Merged

Sketch change metric. #423

merged 49 commits into from
Sep 22, 2021

Conversation

kellertuer
Copy link
Member

@kellertuer kellertuer commented Sep 10, 2021

This PR is a step towards #17.

the idea here is as follows

change_metric (currently just its doctoring, which locally failed to build, let‘s see – I seem to miss something maybe for the docs?) should change the metric, i.e. in a basis compute Z = G_1^-1G_2 X (to switch X from G2 to G1).

Signatures are

Z = change_metric(M::AbstractManifold, G2::AbstractMetric, p, X)

or

Z = change_metric(M::MetricManifold{M,G1}, G2::AbstractMetric, p X)

And it would convert into the metric of the first given manifold. From the embedding, e.g. Euclidean with EuclideanMetric() one would call for example

Z = change_metric(SymmetricPositiveDefinite(n), EuclideanMetric(), p, X)

In order to get this into something like the discussed egrad2rgrad I would propose a function convert_tangent(M, N, p, X) where N is the embedding (if M itself is not an EmbeddedManifold)

  1. First call project(M, p, X)
  2. For the second I am unsure: First change representation? First change metric? Representation info what? For FixedRankMatrices I think we first need a conversion into the 3-factor TMVVector – but what if the user wants a different representation? How would we distinguish these? Or would this already be done by project? Maybe with an optional parameter indicating the representation type (e.g. which of the three for Hyperbolic)?
  3. call change_metric as sketched here
  4. For some manifold we have to “transfer” this correct tangent vector to the right representation, especially for Lie groups, we would parallel transport in the identity (i.e. Lie algebra)

I think we could provide a default change_tangent that just performs steps 1 and 3, and this would be overwritten, e.g. FixedRankMatrices would perform 2 (split into T M V before the metric change) and Lie groups would by default perform 1,3, and 4.

Similarly, with a different change_metric for matrix operations on the tangent space (or actions of matrices, so 1-1 and 2-0 tensors in comparison) some convert_matrix would be a similar approach to generalise ehess2rhess

Adendum: So if one has the Euclidean gradient grad = p -> ... by some machinery, the Riemannian gradient would – with this sketch be p -> convert_tangent(M, p, grad(p)) (if M has an implicit default embedding).

Adendum2: Of course convert_tangent_ is not yet the nicest of names, I think, though it converts a Euclidean (or in the embedding) tangent vector to a Riemannian one. Other ideas are welcome.

@kellertuer kellertuer added the preview docs Add this label if you want to see a PR-preview of the documentation label Sep 10, 2021
@kellertuer
Copy link
Member Author

For the documentation - I do not understand why it currently complains

 LoadError: UndefVarError: change_metric not defined

I document the function signature once and export it – as we do for some functions that are first only given in signature. Hm. Maybe I am overlooking something since it is getting late.

@mateuszbaran
Copy link
Member

For the documentation - I do not understand why it currently complains

 LoadError: UndefVarError: change_metric not defined

I document the function signature once and export it – as we do for some functions that are first only given in signature. Hm. Maybe I am overlooking something since it is getting late.

I don't understand it either. Documenter sometimes has weird problems with building PR docs.

@kellertuer
Copy link
Member Author

I can get the same error locally, so this is not only on PR ;)

@mateuszbaran
Copy link
Member

That's a really weird error... maybe environment in which docs are built doesn't have Manifolds.jl correctly deved? I'm not sure.

@kellertuer
Copy link
Member Author

That's a really weird error... maybe environment in which docs are built doesn't have Manifolds.jl correctly deved? I'm not sure.

I do not know. Locally it just gets weirder

ERROR: LoadError: SystemError: opening file "/var/folders/q4/7mgqym9s5nx0kq4jx_z40wj00000gn/T/jl_me64AL.png": No such file or directory

whatever. I‘ll lave it for now trying to build to docs, I think its GR again. GR sometimes does very strange things.

@kellertuer
Copy link
Member Author

I thought a little bit about steps 2 (changing type) and 4 (adaption to local tangent vector representation).
The order of 3 and 4 is irrelevant I think, so 4 could be after 2.

Then I think both 2 and 4 should be done in project for the following reason: If I project (with the metric from the embedding) onto a manifold, I would expect is_vector(M, p, project(M, p, X)) to return true. For manifolds like fixed rank this requires the right type (that is project should do 2) and for Lie groups it requires an element from the Lie algebra (that is project should do 4).

I am currently updating the docs to the result from our discussion, but locally I can not build the docs and look why it fails here on PR, since JuliaPlots/Plots.jl#3800 either Plots or GR is just completely broken currently.

@kellertuer
Copy link
Member Author

Just when I thought I had understood what we are doing, I think I again do not understand what we are doing. See
https://github.com/NicolasBoumal/manopt/blob/3774b069666a3a1a01a33e10f53062e33495e59e/manopt/manifolds/symfixedrank/sympositivedefinitefactory.m#L102

There the transportation of a tangent vector X at p (there notation is \xi and X) gets transformed as Z = pXp.
I would have just expected pX from the discussion above since the equation reads that we are looking for a transformation B such that (g_E the euclidean we are coming from g_p the linear affine

g_E(X,Y) = tr(XY) = g_p(BX,BY) = tr(p^{-1}BXp^{-1}BY)

Here clearly this yields B=p and not the equation above. So somehow the change_metric I just updated the documentation to and the linked conversion (the symm inside should just be the projection) – are still not the same, so just change_metric after projection (type change and parallel transport to I) – is not what Manopt is doing, they somehow more look at

g_E(X,Y) = tr(XY) = g_p(f(X),B) = tr(p^{-1}Xp^{-1}Y)

for fixed X (and all Y) what I started here with, too? because then, sure, f(X) = pXp. Or am I missing something? So what is now the actual conversion we are looking for and why?

src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
src/manifolds/SymmetricPositiveDefiniteLinearAffine.jl Outdated Show resolved Hide resolved
@codecov
Copy link

codecov bot commented Sep 11, 2021

Codecov Report

Merging #423 (4501a27) into master (bd2b425) will increase coverage by 0.02%.
The diff coverage is 100.00%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #423      +/-   ##
==========================================
+ Coverage   97.96%   97.99%   +0.02%     
==========================================
  Files          79       79              
  Lines        6501     6585      +84     
==========================================
+ Hits         6369     6453      +84     
  Misses        132      132              
Impacted Files Coverage Δ
src/Manifolds.jl 100.00% <ø> (ø)
src/groups/group.jl 91.33% <ø> (ø)
src/manifolds/Multinomial.jl 100.00% <ø> (ø)
src/manifolds/Spectrahedron.jl 100.00% <ø> (ø)
src/manifolds/CenteredMatrices.jl 100.00% <100.00%> (ø)
src/manifolds/GeneralizedGrassmann.jl 100.00% <100.00%> (ø)
src/manifolds/Hyperbolic.jl 100.00% <100.00%> (ø)
src/manifolds/HyperbolicHyperboloid.jl 100.00% <100.00%> (ø)
src/manifolds/HyperbolicPoincareBall.jl 100.00% <100.00%> (ø)
src/manifolds/MetricManifold.jl 97.93% <100.00%> (+0.87%) ⬆️
... and 7 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update bd2b425...4501a27. Read the comment docs.

@kellertuer
Copy link
Member Author

After a short question to the Manopt forum and some further thinking I found the issue at least for the gradient:
We do not want to change the metric (though having https://juliamanifolds.github.io/Manifolds.jl/previews/PR423/manifolds/metric.html#Manifolds.change_metric-Tuple{AbstractManifold,%20AbstractMetric,%20Any,%20Any} is surely nice) but we want to switch the Riesz representer of the differential (since we switch the metric). I documented this at https://juliamanifolds.github.io/Manifolds.jl/previews/PR423/manifolds/metric.html#Manifolds.change_tangent-Tuple{AbstractManifold,%20AbstractMetric,%20Any,%20Any} – where I do not like the name yet.

Note that this requires one representation of tangent vectors, that is the shift to the Lie algebra can happen before or after, since it is not important at which point we switch the metric (for neither of those functions).

What remains is to decide for proper names (one could call the second also change_representer or something) and decide where to put the type-conversion and the parallel transport to the identity. I am still for doing both in project.
Nicolas also wrote here https://groups.google.com/g/manopttoolbox/c/eiuq_BfENjU that this method should work for quotient manifolds with total space being Euclidean as well – I think it even works between arbitrary manifolds as long as there is a projection possibility.

@mateuszbaran
Copy link
Member

I think I'm starting to see how it's supposed to work, in particular why you did change_metric that way initially.

https://juliamanifolds.github.io/Manifolds.jl/previews/PR423/manifolds/metric.html#Manifolds.change_tangent-Tuple{AbstractManifold,%20AbstractMetric,%20Any,%20Any} – where I do not like the name yet.

I think a name like change_gradient_metric or something like that would be fine.

Note that this requires one representation of tangent vectors, that is the shift to the Lie algebra can happen before or after, since it is not important at which point we switch the metric (for neither of those functions).

My first thought is to require gradients in the correct representation to be passed to change_gradient, so switching representation would happen first. Maybe it's fine to do it the other way too but it's not obvious to me.

What remains is to decide for proper names (one could call the second also change_representer or something) and decide where to put the type-conversion and the parallel transport to the identity. I am still for doing both in project.

It seems reasonable to put both type conversion and parallel transport in project. By the way, vector projections of Rotations manifold doesn't do parallel transport currently as far as I can tell, it's a different vector transport.

Nicolas also wrote here https://groups.google.com/g/manopttoolbox/c/eiuq_BfENjU that this method should work for quotient manifolds with total space being Euclidean as well – I think it even works between arbitrary manifolds as long as there is a projection possibility.

Great, that's quite helpful 🙂 .

@kellertuer
Copy link
Member Author

https://juliamanifolds.github.io/Manifolds.jl/previews/PR423/manifolds/metric.html#Manifolds.change_tangent-Tuple{AbstractManifold,%20AbstractMetric,%20Any,%20Any} – where I do not like the name yet.

I think a name like change_gradient_metric or something like that would be fine.

That sounds like a reasonable name, I will think whether it can have a more general name even, since this might not only be used for gradients.

Note that this requires one representation of tangent vectors, that is the shift to the Lie algebra can happen before or after, since it is not important at which point we switch the metric (for neither of those functions).

My first thought is to require gradients in the correct representation to be passed to change_gradient, so switching representation would happen first. Maybe it's fine to do it the other way too but it's not obvious to me.

That is also what I have in mind, that function should only change the metric and not representation

What remains is to decide for proper names (one could call the second also change_representer or something) and decide where to put the type-conversion and the parallel transport to the identity. I am still for doing both in project.

It seems reasonable to put both type conversion and parallel transport in project. By the way, vector projections of Rotations manifold doesn't do parallel transport currently as far as I can tell, it's a different vector transport.

I will check rotation then, but great that we agree, that both conversion and representation shift (to Lie algebra) should happen in the projection. I will look at that and adopt docs/function implementations.

src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
kellertuer and others added 3 commits September 11, 2021 12:38
…folds/Manifolds.jl into kellertuer/gradient-conversion

# Conflicts:
#	src/manifolds/MetricManifold.jl
@kellertuer
Copy link
Member Author

I think, since change_gradient is a little more general, maybe even change_Riesz_representer would be a good name?

@kellertuer
Copy link
Member Author

After I fixed the last few test coverage lines, I will start a small tutorial over on Manopt (maybe just Rayleigh again) on how to use a little bit of AD in Manopt.

src/manifolds/HyperbolicHyperboloid.jl Show resolved Hide resolved
src/manifolds/HyperbolicHyperboloid.jl Outdated Show resolved Hide resolved
src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
src/manifolds/PositiveNumbers.jl Outdated Show resolved Hide resolved
src/manifolds/PowerManifold.jl Outdated Show resolved Hide resolved
src/manifolds/ProductManifold.jl Outdated Show resolved Hide resolved
kellertuer and others added 3 commits September 16, 2021 10:47
@kellertuer
Copy link
Member Author

While “just shortly adding” a test for the fallback to use the local metric, I am somehow hitting a wall on an ambiguity, where I thin transparency does something and then it does not find the local metric function I implemented. So I will have do take a looooong look into that, where local metric is maybe too transparent or something.

For now I do not yet understand why the exact function I implemented (which I thought would be called for the manifold&metric in the test) is not even mentioned in the ambiguous cases...

@mateuszbaran
Copy link
Member

Yeah, we definitely don't have local_metric transparency tested well enough.

@kellertuer
Copy link
Member Author

kellertuer commented Sep 17, 2021

Hm, I am a little lost on local_metric. I never seems to call the function I think it should call and it behaves differently in debugger then when running the current last block of the metric.jl tests manually (including the types and function definitions from before).

So I do not know how it was supposed to work nor how it is currently actually non-working, since I can not debug the current error (when the debugger throws an error even earlier).

Any help appreciated. I think local_metric currently acts transparently even on MetricManifolds which it should not, since without the MetricManifold (on a non-default metric) this function does not make sense.

Edit 5: I removed the previous edits, since I do not understand why they went wrong, but I do not know why it is currently working, either.

src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
test/metric.jl Outdated Show resolved Hide resolved
@kellertuer
Copy link
Member Author

After about 2 hours fiddling with a lot of transparency, maybe local_metric is fixed. But now get_vector and get_coordinates run into a tremendous amount of ambiguities, too.

I think the decorator pattern and bases being optional is something we should maybe redesign / avoid, since I feel like I can also spent a few weeks without sleep just trying to fix all this stuff and it just breaks even the last braincell after 2 hours.

@mateuszbaran
Copy link
Member

I think I'd vote for just not using the decorator pattern for metric-related functions. There is just not enough benefit to justify the effort needed to make it work. get_vector and get_coordinates require a lot of disambiguation but work decently enough now. They should likely be simplified though but I don't think it's an urgent issue.

@kellertuer
Copy link
Member Author

I might have found the way to get the tests running. Note that in the current test manifold I had to

function Manifolds.get_vector!(
    M::MetricManifold{ℝ,<:TestEuclidean,<:TestEuclideanMetric},
    X,
    ::Any,
    c,
    ::DefaultOrthogonalBasis{ℝ,<:ManifoldsBase.TangentSpaceType},
)

do quite a detailed typing on the basis to resolve the ambiguity.

@kellertuer
Copy link
Member Author

It seems that sometimes Format & Documenter Fail because some packages could not be loaded. I just restarted both, since they should work. I also finished code coverage, so this should be good to go.

@mateuszbaran
Copy link
Member

Great, I'll take a look at it again soon.

Copy link
Member

@mateuszbaran mateuszbaran left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think with some documentation polishing this should be ready to go 🙂

src/manifolds/GeneralizedGrassmann.jl Outdated Show resolved Hide resolved
src/manifolds/HyperbolicHyperboloid.jl Outdated Show resolved Hide resolved
src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
src/manifolds/MetricManifold.jl Outdated Show resolved Hide resolved
src/manifolds/MetricManifold.jl Show resolved Hide resolved
Copy link
Member

@mateuszbaran mateuszbaran left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can merge this when CI passes and finally resolve #17 🎉

@kellertuer
Copy link
Member Author

Was a way to go, but I am happy we have that now :)

@kellertuer kellertuer merged commit 9fc772a into master Sep 22, 2021
kellertuer added a commit that referenced this pull request Sep 24, 2021
commit 26ad8a5
Author: Ronny Bergmann <[email protected]>
Date:   Thu Sep 23 20:17:01 2021 +0200

    runs formatter.

commit 99bcb23
Merge: b027f4c 2a03fb1
Author: Ronny Bergmann <[email protected]>
Date:   Thu Sep 23 18:33:25 2021 +0200

    Merge branch 'master' into kellertuer/polish-diff-interfaces

commit 2a03fb1
Author: Mateusz Baran <[email protected]>
Date:   Thu Sep 23 18:08:23 2021 +0200

    Support for Zygote and ReverseDiff gradients (#427)

    * Support for Zygote and ReverseDiff gradients

    * Add Zygote test dependency

    * bump ambiguity limit because of Zygote

    * fix tests and Zygote backend

    * bump Julia to 1.5

    * fixing some issues on Julia 1.7-rc1

    * more fixing for Julia 1.7

    * formatting

    * reduce tangent vector length in a test

    since the approximation only works very locally (and they changed the default random number generator)

    * Update Project.toml

    Co-authored-by: Ronny Bergmann <[email protected]>

    * bump atol on Rotations

    * reduce tangent vector size even further.

    * adapt one more tolerance

    Co-authored-by: Ronny Bergmann <[email protected]>

commit b027f4c
Author: Ronny Bergmann <[email protected]>
Date:   Thu Sep 23 17:11:19 2021 +0200

    fix a few typos.

commit dcc471e
Author: Ronny Bergmann <[email protected]>
Date:   Thu Sep 23 13:53:07 2021 +0200

    unify naming.

commit 3de9a30
Author: Ronny Bergmann <[email protected]>
Date:   Thu Sep 23 13:33:59 2021 +0200

    Reduce dependencies, wort a little bit further on polishing.

commit 8702902
Author: Ronny Bergmann <[email protected]>
Date:   Thu Sep 23 10:45:36 2021 +0200

    runs formatter.

commit 378bbba
Author: Ronny Bergmann <[email protected]>
Date:   Thu Sep 23 10:45:15 2021 +0200

    fix the other jacobian.

commit a7d1edb
Author: Ronny Bergmann <[email protected]>
Date:   Thu Sep 23 10:29:37 2021 +0200

    renaming and dependencies.

commit 02f97d6
Merge: aca6d5c 9fc772a
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 22 19:48:36 2021 +0200

    Merge branch 'master' into kellertuer/polish-diff-interfaces

    # Conflicts:
    #	Project.toml
    #	src/Manifolds.jl

commit aca6d5c
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 22 19:46:59 2021 +0200

    Add a proper working default.

commit 9fc772a
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 22 19:46:01 2021 +0200

    Sketch change metric. (#423)

    * Adds a change_metric and a change_representer
    * Apply suggestions from code review
    * bump version.

    Co-authored-by: Mateusz Baran <[email protected]>

commit 1462018
Merge: 923a718 4501a27
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 22 19:20:52 2021 +0200

    Merge branch 'kellertuer/gradient-conversion' into kellertuer/polish-diff-interfaces

    # Conflicts:
    #	Project.toml
    #	src/differentiation/riemannian_diff.jl

commit 923a718
Merge: d391483 07c905e
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 22 18:20:39 2021 +0200

    Merge branch 'mbaran/reverse-diff-zygote' into kellertuer/polish-diff-interfaces

commit 07c905e
Author: Mateusz Baran <[email protected]>
Date:   Wed Sep 22 17:27:10 2021 +0200

    Update Project.toml

    Co-authored-by: Ronny Bergmann <[email protected]>

commit 4501a27
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 22 17:19:42 2021 +0200

    Apply suggestions from code review

    Co-authored-by: Mateusz Baran <[email protected]>

commit 3c47350
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 22 08:59:28 2021 +0200

    reduce tangent vector length in a test

    since the approximation only works very locally (and they changed the default random number generator)

commit 3b7396d
Author: Mateusz Baran <[email protected]>
Date:   Tue Sep 21 19:19:09 2021 +0200

    formatting

commit 5d75e6e
Author: Mateusz Baran <[email protected]>
Date:   Tue Sep 21 19:17:28 2021 +0200

    more fixing for Julia 1.7

commit c723345
Author: Mateusz Baran <[email protected]>
Date:   Tue Sep 21 12:31:30 2021 +0200

    fixing some issues on Julia 1.7-rc1

commit cf00e22
Author: Mateusz Baran <[email protected]>
Date:   Tue Sep 21 08:49:40 2021 +0200

    bump Julia to 1.5

commit 1ed46db
Author: Mateusz Baran <[email protected]>
Date:   Mon Sep 20 23:02:03 2021 +0200

    fix tests and Zygote backend

commit 7849fc0
Author: Mateusz Baran <[email protected]>
Date:   Mon Sep 20 19:45:41 2021 +0200

    bump ambiguity limit because of Zygote

commit 9163480
Author: Mateusz Baran <[email protected]>
Date:   Mon Sep 20 14:40:50 2021 +0200

    Add Zygote test dependency

commit 7ed57da
Author: Mateusz Baran <[email protected]>
Date:   Mon Sep 20 12:48:09 2021 +0200

    Support for Zygote and ReverseDiff gradients

commit 2f498da
Author: Ronny Bergmann <[email protected]>
Date:   Sat Sep 18 23:17:32 2021 +0200

    add a test that double metric wrapping is avoided; remove unnecessary dispatch.

commit e180bc4
Author: Ronny Bergmann <[email protected]>
Date:   Sat Sep 18 21:58:49 2021 +0200

    Simplify default implementation. Extend coverage. Order functions alphabetically.

commit 420047d
Author: Ronny Bergmann <[email protected]>
Date:   Sat Sep 18 20:07:21 2021 +0200

    Fix the error message for hyperbolic.

commit ed2871c
Author: Ronny Bergmann <[email protected]>
Date:   Sat Sep 18 19:54:19 2021 +0200

    maybe fix the new test by slightly overtyping the basis.

commit 49dc500
Author: Ronny Bergmann <[email protected]>
Date:   Fri Sep 17 18:44:59 2021 +0200

    format this interims non-working test.

commit a78ace4
Author: Ronny Bergmann <[email protected]>
Date:   Fri Sep 17 18:40:57 2021 +0200

    Maybe. just maybe fixed local metric, but now get vector and get coordinates do not work for the test.

commit 97417ae
Author: Ronny Bergmann <[email protected]>
Date:   Thu Sep 16 14:31:49 2021 +0200

    Improve docs.

commit d34ef6c
Merge: 95a3c8b d1dbb7c
Author: Ronny Bergmann <[email protected]>
Date:   Thu Sep 16 11:09:24 2021 +0200

    Merge branch 'kellertuer/gradient-conversion' of github.com:JuliaManifolds/Manifolds.jl into kellertuer/gradient-conversion

commit 95a3c8b
Author: Ronny Bergmann <[email protected]>
Date:   Thu Sep 16 11:09:16 2021 +0200

    adds a test for positive vectors and starts testing the default Metric fallbacks using the local metric.

commit d1dbb7c
Author: Ronny Bergmann <[email protected]>
Date:   Thu Sep 16 10:47:57 2021 +0200

    Apply suggestions from code review

    Co-authored-by: Mateusz Baran <[email protected]>

commit 14fdb06
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 15 22:39:38 2021 +0200

    bump version.

commit cbcef94
Merge: da98b5f bd2b425
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 15 22:38:45 2021 +0200

    Merge branch 'master' into kellertuer/gradient-conversion

commit da98b5f
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 15 22:37:18 2021 +0200

    append this step to riemannian differentiation.

commit c154516
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 15 22:37:01 2021 +0200

    finish tests for product and power – extend features to also work on the sphere.

commit 844f8c4
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 15 21:42:59 2021 +0200

    Fixes a few typos in the docs.

commit 5005965
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 15 20:40:11 2021 +0200

    Document and test SPDs

commit d2cec4d
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 15 20:30:00 2021 +0200

    Finish positive Numbers.

commit 7737c92
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 15 20:03:49 2021 +0200

    Extend ProbabilitySimples to also cover change_metric.

commit 6300f80
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 15 20:03:33 2021 +0200

    delete change_representer since it should be inherited from ProbabilitySimplex combined with AbstractPowerManifold and EmbeddedManifold.

commit 95b8bc6
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 15 19:48:20 2021 +0200

    finishes testing for hyperbolic.

commit 6f1fb64
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 15 19:47:37 2021 +0200

    fix a small bug in Hyperbolic copyto! which returned the wrong value.

commit a62e134
Author: Ronny Bergmann <[email protected]>
Date:   Wed Sep 15 10:31:24 2021 +0200

    Documentation and Test for Poincaré Ball conversion.

commit d84a3cc
Author: Ronny Bergmann <[email protected]>
Date:   Tue Sep 14 19:52:52 2021 +0200

    adds two further small tests.

commit ea76128
Author: Ronny Bergmann <[email protected]>
Date:   Tue Sep 14 19:21:08 2021 +0200

    Document and test hyperbolic.

commit 257b223
Author: Ronny Bergmann <[email protected]>
Date:   Tue Sep 14 18:20:55 2021 +0200

    Finish documentation and test for Generalised Grassmann.

commit 152e9a1
Author: Ronny Bergmann <[email protected]>
Date:   Tue Sep 14 18:20:34 2021 +0200

    fix transparency of nonmutating to parent on a Manifold level.

commit 1b79065
Author: Ronny Bergmann <[email protected]>
Date:   Mon Sep 13 17:49:20 2021 +0200

    Fix two typos.

commit 2eac3ee
Author: Ronny Bergmann <[email protected]>
Date:   Mon Sep 13 16:30:35 2021 +0200

    Change `change_gradient` to `change_represender` and introduce mutating variant

commit 5539f4b
Author: Ronny Bergmann <[email protected]>
Date:   Mon Sep 13 12:11:52 2021 +0200

    introduce mutating variants and decorator transparency.

commit 714862e
Merge: 4912e4f 05968dc
Author: Ronny Bergmann <[email protected]>
Date:   Sun Sep 12 20:09:17 2021 +0200

    Merge branch 'kellertuer/gradient-conversion' of github.com:JuliaManifolds/Manifolds.jl into kellertuer/gradient-conversion

commit 4912e4f
Author: Ronny Bergmann <[email protected]>
Date:   Sun Sep 12 20:09:11 2021 +0200

    Adress points from code review.

commit 05968dc
Author: Ronny Bergmann <[email protected]>
Date:   Sun Sep 12 20:03:18 2021 +0200

    Apply suggestions from code review

    Co-authored-by: Mateusz Baran <[email protected]>

commit 9769a1a
Author: Ronny Bergmann <[email protected]>
Date:   Sun Sep 12 18:17:45 2021 +0200

    add the generic case for doubly stochastic (includes symmetric, too).

commit 42875a6
Author: Ronny Bergmann <[email protected]>
Date:   Sun Sep 12 18:13:42 2021 +0200

    implement the remaining conversions.

commit fb304c2
Merge: cb2f932 2ee2072
Author: Ronny Bergmann <[email protected]>
Date:   Sat Sep 11 16:51:29 2021 +0200

    Merge branch 'kellertuer/gradient-conversion' of github.com:JuliaManifolds/Manifolds.jl into kellertuer/gradient-conversion

commit cb2f932
Author: Ronny Bergmann <[email protected]>
Date:   Sat Sep 11 16:51:17 2021 +0200

    adds a few conversion, where the embedding is not isometric.

commit 2ee2072
Author: Ronny Bergmann <[email protected]>
Date:   Sat Sep 11 13:04:01 2021 +0200

    Update src/manifolds/MetricManifold.jl

    Co-authored-by: Mateusz Baran <[email protected]>

commit c742ea5
Author: Ronny Bergmann <[email protected]>
Date:   Sat Sep 11 12:55:35 2021 +0200

    Fix two typos.

commit a17b4ca
Merge: 540f374 056e24c
Author: Ronny Bergmann <[email protected]>
Date:   Sat Sep 11 12:47:27 2021 +0200

    Merge branch 'kellertuer/gradient-conversion' of github.com:JuliaManifolds/Manifolds.jl into kellertuer/gradient-conversion

    # Conflicts:
    #	src/manifolds/MetricManifold.jl

commit 540f374
Author: Ronny Bergmann <[email protected]>
Date:   Sat Sep 11 12:46:50 2021 +0200

    Specify Reisz representer, change adjoint to ^H.

commit 056e24c
Author: Ronny Bergmann <[email protected]>
Date:   Sat Sep 11 12:38:40 2021 +0200

    Update src/manifolds/MetricManifold.jl

    Co-authored-by: Mateusz Baran <[email protected]>

commit 158bbf2
Author: Ronny Bergmann <[email protected]>
Date:   Sat Sep 11 12:33:10 2021 +0200

    Apply suggestions from code review

    Co-authored-by: Mateusz Baran <[email protected]>

commit 616db5d
Author: Ronny Bergmann <[email protected]>
Date:   Sat Sep 11 10:39:47 2021 +0200

    Fix a few typos in docs.

commit c9737b3
Author: Ronny Bergmann <[email protected]>
Date:   Sat Sep 11 10:21:02 2021 +0200

    adds a change_gradient.

commit 0857b21
Author: Ronny Bergmann <[email protected]>
Date:   Sat Sep 11 09:25:54 2021 +0200

    fix a few typos.

commit a302733
Author: Ronny Bergmann <[email protected]>
Date:   Sat Sep 11 09:04:07 2021 +0200

    rfF.

commit 3347930
Author: Ronny Bergmann <[email protected]>
Date:   Sat Sep 11 09:01:30 2021 +0200

    Document insights from yesterday evening and – getting stuck at the next point.

commit ae0cdd1
Author: Ronny Bergmann <[email protected]>
Date:   Fri Sep 10 20:38:56 2021 +0200

    Sketch change metric.
@kellertuer kellertuer deleted the kellertuer/gradient-conversion branch May 18, 2022 13:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
preview docs Add this label if you want to see a PR-preview of the documentation Ready-for-Review A label for pull requests that are feature-ready
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants