Package: tensorflow-riemopt
TensorFlow RiemOptA library for manifold-constrained optimization in TensorFlow.InstallationTo install the latest development version from GitHub:pipinstallgit+https://github.com/master/tensorflow-riemopt.gitTo install a package from PyPI:pipinstalltensorflow-riemoptFeaturesThe core package implements concepts in differential geometry, such as
manifolds and Riemannian metrics with associated exponential and logarithmic
maps, geodesics, retractions, and transports. For manifolds, where closed-form
expressions are not available, the library provides numerical approximations.importtensorflow_riemoptasriemoptS=riemopt.manifolds.Sphere()x=S.projx(tf.constant([0.1,-0.1,0.1]))u=S.proju(x,tf.constant([1.,1.,1.]))v=S.proju(x,tf.constant([-0.7,-1.4,1.4]))y=S.exp(x,v)u_=S.transp(x,y,u)v_=S.transp(x,y,v)Manifoldsmanifolds.Cholesky- manifold of lower triangular matrices with positive diagonal elementsmanifolds.Euclidian- unconstrained manifold with the Euclidean metricmanifolds.Grassmannian- manifold ofp-dimensional linear subspaces of then-dimensional spacemanifolds.Hyperboloid- manifold ofn-dimensional hyperbolic space embedded in then+1-dimensional Minkowski spacemanifolds.Poincare- the Poincaré ball model of the hyperbolic spacemanifolds.Product- Cartesian product of manifoldsmanifolds.SPDAffineInvariant- manifold of symmetric positive definite (SPD) matrices endowed with the affine-invariant metricmanifolds.SPDLogCholesky- SPD manifold with the Log-Cholesky metricmanifolds.SPDLogEuclidean- SPD manifold with the Log-Euclidean metricmanifolds.SpecialOrthogonal- manifold of rotation matricesmanifolds.Sphere- manifold of unit-normalized pointsmanifolds.StiefelEuclidean- manifold of orthonormalp-frames in then-dimensional space endowed with the Euclidean metricmanifolds.StiefelCanonical- Stiefel manifold with the canonical metricmanifolds.StiefelCayley- Stiefel manifold the retraction map via an iterative Cayley transformOptimizersConstrained optimization algorithms work as drop-in replacements for Keras
optimizers for sparse and dense updates in both Eager and Graph modes.optimizers.RiemannianSGD- Riemannian Gradient Descentoptimizers.RiemannianAdam- Riemannian Adam and AMSGradoptimizers.ConstrainedRMSProp- Constrained RMSPropLayerslayers.ManifoldEmbedding- constrainedkeras.layers.EmbeddinglayerExamplesSPDNet- Huang, Zhiwu, and Luc Van Gool. "A Riemannian network for SPD matrix learning." Proceedings of the Thirty-First AAAI Conference on Artificial Intelligence. AAAI Press, 2017.LieNet- Huang, Zhiwu, et al. "Deep learning on Lie groups for skeleton-based action recognition." Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.GrNet- Huang, Zhiwu, Jiqing Wu, and Luc Van Gool. "Building Deep Networks on Grassmann Manifolds." AAAI. AAAI Press, 2018.Hyperbolic Neural Network- Ganea, Octavian, Gary Bécigneul, and Thomas Hofmann. "Hyperbolic neural networks." Advances in neural information processing systems. 2018.Poincaré GloVe- Tifrea, Alexandru, Gary Becigneul, and Octavian-Eugen Ganea. "Poincaré Glove: Hyperbolic Word Embeddings." International Conference on Learning Representations. 2018.ReferencesIf you find TensorFlow RiemOpt useful in your research, please cite:@misc{smirnov2021tensorflow,
      title={TensorFlow RiemOpt: a library for optimization on Riemannian manifolds},
      author={Oleg Smirnov},
      year={2021},
      eprint={2105.13921},
      archivePrefix={arXiv},
      primaryClass={cs.MS}
}AcknowledgmentTensorFlow RiemOpt was inspired by many similar projects:Manopt, a matlab toolbox for optimization on manifoldsPymanopt, a Python toolbox for optimization on manifoldsGeoopt: Riemannian Optimization in PyTorchGeomstats, an open-source Python package for computations and statistics on nonlinear manifoldsLicenseThe code is MIT-licensed.