
Collecteur conscient pytorch.optim .
Implémentation non officielle pour les «méthodes d'optimisation adaptative Riemannien» ICLR2019 et plus encore.
Assurez-vous que Pytorch> = 2.0.1 installé
Il existe deux façons d'installer Geoopt:
pip install git+https://github.com/geoopt/geoopt.gitpip install geooptLa façon préférée d'installer Geoopt changera une fois l'étape du projet stable atteint. Maintenant, PYPI est derrière Master car nous développons et implémentons activement de nouvelles fonctionnalités.
Geoopt prend officiellement 2 dernières versions stables de Pytorch en amont ou la dernière version majeure.
Le travail est en cours, mais vous pouvez déjà l'utiliser. Notez que l'API pourrait changer dans les versions futures.
geoopt.ManifoldTensor - tout comme Torch.tensor avec un argument de mots manifold supplémentaire.geoopt.ManifoldParameter - Identique à celle ci-dessus, reconnu dans torch.nn.Module.parameters comme correctement sous-classé.Tous les conteneurs ci-dessus ont des méthodes spéciales pour travailler avec eux comme avec des points sur un certain variét
.proj_() - Inplace la projection sur le collecteur..proju(u) - Vector de projet u sur l'espace tangent. Vous devez projeter tous les vecteurs pour toutes les méthodes ci-dessous..egrad2rgrad(u) - Gradient de projet u sur le collecteur Riemannien.inner(u, v=None) - produit intérieur à ce stade pour deux vecteurs tangents à ce stade. Les vecteurs adoptés ne sont pas projetés, ils sont supposés déjà projetés..retr(u) - carte de rétraction suivant le vecteur u.expmap(u) - Carte exponentielle suivant le vecteur u (si Expmap n'est pas disponible en forme fermée, la meilleure approximation est utilisée).transp(v, u) - Vector de transport v avec direction u.retr_transp(v, u) - transport self , vector v (et peut-être plus de vecteurs) avec la direction u (les rendements sont des tenseurs simples)geoopt.Euclidean - collecteur sans contrainte en R avec métrique euclidiennegeoopt.Stiefel - collecteur de stifel sur les matrices A in R^{nxp} : A^t A=I , n >= pgeoopt.Sphere - sphère collecteur ||x||=1geoopt.BirkhoffPolytope - collecteur de matrices doublement stochastiquesgeoopt.Stereographic - Modèle de projection stéréographique de courbure constantegeoopt.SphereProjection - modèle de projection stéréographique de la sphèregeoopt.PoincareBall - modèle de balle Poinaregeoopt.Lorentz - modèle hyperboloïdegeoopt.ProductManifold - Constructeur de collecteur de produitsgeoopt.Scaled - Version à l'échelle du collecteur. Similaire à l'apprentissage des représentations de transport mixte dans les espaces de produits s'ils sont combinés avec ProductManifoldgeoopt.SymmetricPositiveDefinite - Matrice SPDgeoopt.UpperHalf - Siegel Half Half Halfold. Prend en charge les métriques Riemannien et Finsler, comme dans les espaces symétriques pour les incorporations graphiques: une approche Finsler-Riemannien.geoopt.BoundedDomain - Siegel Loué Domain Méditeur. Soutient les métriques Riemannien et Finsler.Tous les variétés mettent en œuvre les méthodes nécessaires pour manipuler les tenseurs sur les collecteurs et les vecteurs tangents à utiliser à usage général. Voir plus dans la documentation.
geoopt.optim.RiemannianSGD - une sous-classe de torch.optim.SGD avec la même APIgeoopt.optim.RiemannianAdam - une sous-classe de torch.optim.Adamgeoopt.samplers.RSGLD - dynamique de gradient stochastique riemannien Langevingeoopt.samplers.RHMC - Riemannien Hamiltonien Monte-Carlogeoopt.samplers.SGRHMC - Gradient stochastique Riemannien Hamiltonien Monte-Carlo Le module expérimental geoopt.layers permet d'intégrer Geoopt dans l'apprentissage en profondeur
Si vous trouvez ce projet utile dans vos recherches, veuillez ajouter cette entrée Bibtex dans les références et citer.
@misc { geoopt2020kochurov ,
title = { Geoopt: Riemannian Optimization in PyTorch } ,
author = { Max Kochurov and Rasul Karimov and Serge Kozlukov } ,
year = { 2020 } ,
eprint = { 2005.02819 } ,
archivePrefix = { arXiv } ,
primaryClass = { cs.CG }
}ETH: 0x008319973D4017414FDF5B3BEF1369BA78275C6A