[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-geoopt--geoopt":3,"similar-geoopt--geoopt":129},{"id":4,"github_repo":5,"name":6,"description_en":7,"description_zh":8,"ai_summary_zh":8,"readme_en":9,"readme_zh":10,"quickstart_zh":11,"use_case_zh":12,"hero_image_url":13,"owner_login":6,"owner_name":6,"owner_avatar_url":14,"owner_bio":15,"owner_company":15,"owner_location":15,"owner_email":15,"owner_twitter":15,"owner_website":15,"owner_url":16,"languages":17,"stars":30,"forks":31,"last_commit_at":32,"license":33,"difficulty_score":34,"env_os":35,"env_gpu":36,"env_ram":36,"env_deps":37,"category_tags":41,"github_topics":43,"view_count":49,"oss_zip_url":15,"oss_zip_packed_at":15,"status":50,"created_at":51,"updated_at":52,"faqs":53,"releases":83},4874,"geoopt\u002Fgeoopt","geoopt","Riemannian Adaptive Optimization Methods with pytorch optim","geoopt 是一个专为 PyTorch 设计的开源库，旨在让深度学习模型能够在非欧几里得空间（即黎曼流形）中进行高效的自适应优化。传统深度学习通常假设数据位于平坦的欧氏空间，但在处理层级结构、方向数据或复杂图关系时，这种假设往往不够准确。geoopt 通过提供感知流形结构的优化器（如 RiemannianSGD 和 RiemannianAdam），解决了在弯曲空间中进行梯度下降和参数更新的难题，确保模型参数始终约束在特定的几何流形上。\n\n这款工具特别适合 AI 研究人员和高级开发者，尤其是那些从事图神经网络、推荐系统、自然语言处理中层次化表示学习，或需要处理正交矩阵、对称正定矩阵等特殊约束问题的团队。geoopt 的核心亮点在于其丰富的流形实现，涵盖了球面、双曲空间（如 Poincare 球和洛伦兹模型）、Stiefel 流形以及乘积流形等，并提供了完整的张量操作接口（如投影、指数映射和平行移动）。它无缝兼容 PyTorch 生态，允许用户像使用普通张量一样操作流形上的数据，极大地降低了在非欧几何领域进行算法探索和落地的门槛。","geoopt\n======\n\n|Python Package Index| |Read The Docs| |Build Status| |Coverage Status| |Codestyle Black| |Gitter|\n\nManifold aware ``pytorch.optim``.\n\nUnofficial implementation for `“Riemannian Adaptive Optimization\nMethods”`_ ICLR2019 and more.\n\nInstallation\n------------\nMake sure you have pytorch>=2.0.1 installed\n\nThere are two ways to install geoopt:\n\n1. GitHub (preferred so far) due to active development\n\n.. code-block:: bash\n\n    pip install git+https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt.git\n\n\n2. pypi (this might be significantly behind master branch but kept as fresh as possible)\n\n.. code-block:: bash\n\n    pip install geoopt\n\nThe preferred way to install geoopt will change once stable project stage is achieved.\nNow, pypi is behind master as we actively develop and implement new features.\n\n\nPyTorch Support\n~~~~~~~~~~~~~~~\nGeoopt officially supports **2 latest stable versions** of pytorch upstream or the latest major release.\n\nWhat is done so far\n-------------------\n\nWork is in progress but you can already use this. Note that API might\nchange in future releases.\n\nTensors\n~~~~~~~\n\n-  ``geoopt.ManifoldTensor`` - just as torch.Tensor with additional\n   ``manifold`` keyword argument.\n-  ``geoopt.ManifoldParameter`` - same as above, recognized in\n   ``torch.nn.Module.parameters`` as correctly subclassed.\n\nAll above containers have special methods to work with them as with\npoints on a certain manifold\n\n-  ``.proj_()`` - inplace projection on the manifold.\n-  ``.proju(u)`` - project vector ``u`` on the tangent space. You need\n   to project all vectors for all methods below.\n-  ``.egrad2rgrad(u)`` - project gradient ``u`` on Riemannian manifold\n-  ``.inner(u, v=None)`` - inner product at this point for two\n   **tangent** vectors at this point. The passed vectors are not\n   projected, they are assumed to be already projected.\n-  ``.retr(u)`` - retraction map following vector ``u``\n-  ``.expmap(u)`` - exponential map following vector ``u`` (if expmap is not available in closed form, best approximation is used)\n-  ``.transp(v, u)`` - transport vector ``v``  with direction ``u``\n-  ``.retr_transp(v, u)`` - transport ``self``, vector ``v``\n   (and possibly more vectors) with direction ``u``\n   (returns are plain tensors)\n\nManifolds\n~~~~~~~~~\n\n-  ``geoopt.Euclidean`` - unconstrained manifold in ``R`` with\n   Euclidean metric\n-  ``geoopt.Stiefel`` - Stiefel manifold on matrices\n   ``A in R^{n x p} : A^t A=I``, ``n >= p``\n-  ``geoopt.Sphere`` - Sphere manifold ``||x||=1``\n-  ``geoopt.BirkhoffPolytope`` - manifold of Doubly Stochastic matrices\n-  ``geoopt.Stereographic`` - Constant curvature stereographic projection model\n-  ``geoopt.SphereProjection`` - Sphere stereographic projection model\n-  ``geoopt.PoincareBall`` -  `Poincare ball model \u003Chttps:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPoincar%C3%A9_disk_model>`_\n-  ``geoopt.Lorentz`` - `Hyperboloid model \u003Chttps:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHyperboloid_model>`_\n-  ``geoopt.ProductManifold`` - Product manifold constructor\n-  ``geoopt.Scaled`` - Scaled version of the manifold. Similar to `Learning Mixed-Curvature Representations in Product Spaces \u003Chttps:\u002F\u002Fopenreview.net\u002Fforum?id=HJxeWnCcF7>`_ if combined with ``ProductManifold``\n-  ``geoopt.SymmetricPositiveDefinite`` - SPD matrix manifold\n-  ``geoopt.UpperHalf`` - Siegel Upper half manifold. Supports Riemannian and Finsler metrics, as in `Symmetric Spaces for Graph Embeddings: A Finsler-Riemannian Approach \u003Chttps:\u002F\u002Farxiv.org\u002Fabs\u002F2106.04941>`_.\n-  ``geoopt.BoundedDomain`` - Siegel Bounded domain manifold. Supports Riemannian and Finsler metrics.\n\nAll manifolds implement methods necessary to manipulate tensors on manifolds and\ntangent vectors to be used in general purpose. See more in `documentation`_.\n\nOptimizers\n~~~~~~~~~~\n\n-  ``geoopt.optim.RiemannianSGD`` - a subclass of ``torch.optim.SGD``\n   with the same API\n-  ``geoopt.optim.RiemannianAdam`` - a subclass of ``torch.optim.Adam``\n\nSamplers\n~~~~~~~~\n\n-  ``geoopt.samplers.RSGLD`` - Riemannian Stochastic Gradient Langevin\n   Dynamics\n-  ``geoopt.samplers.RHMC`` - Riemannian Hamiltonian Monte-Carlo\n-  ``geoopt.samplers.SGRHMC`` - Stochastic Gradient Riemannian\n   Hamiltonian Monte-Carlo\n\n\nLayers\n~~~~~~\nExperimental ``geoopt.layers`` module allows to embed geoopt into deep learning\n\nCiting Geoopt\n~~~~~~~~~~~~~\nIf you find this project useful in your research, please kindly add this bibtex entry in references and cite.\n\n.. code:: bibtex\n\n    @misc{geoopt2020kochurov,\n        title={Geoopt: Riemannian Optimization in PyTorch},\n        author={Max Kochurov and Rasul Karimov and Serge Kozlukov},\n        year={2020},\n        eprint={2005.02819},\n        archivePrefix={arXiv},\n        primaryClass={cs.CG}\n    }\n\nDonations\n~~~~~~~~~\nETH: 0x008319973D4017414FdF5B3beF1369bA78275C6A\n   \n\n.. _“Riemannian Adaptive Optimization Methods”: https:\u002F\u002Fopenreview.net\u002Fforum?id=r1eiqi09K7\n.. _documentation: https:\u002F\u002Fgeoopt.readthedocs.io\u002Fen\u002Flatest\u002Fmanifolds.html\n\n\n.. |Python Package Index| image:: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fgeoopt.svg\n   :target: https:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fgeoopt\n.. |Read The Docs| image:: https:\u002F\u002Freadthedocs.org\u002Fprojects\u002Fgeoopt\u002Fbadge\u002F?version=latest\n   :target: https:\u002F\u002Fgeoopt.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest\n   :alt: Documentation Status\n.. |Build Status| image:: https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Factions\u002Fworkflows\u002Ftesting.yml\u002Fbadge.svg?branch=master\n   :target: https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Factions\u002Fworkflows\u002Ftesting.yml\n.. |Coverage Status| image:: https:\u002F\u002Fcodecov.io\u002Fgh\u002Fgeoopt\u002Fgeoopt\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg?token=HOI5LD0VWF\n   :target: https:\u002F\u002Fcodecov.io\u002Fgh\u002Fgeoopt\u002Fgeoopt\n.. |Codestyle Black| image:: https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-000000.svg\n   :target: https:\u002F\u002Fgithub.com\u002Fambv\u002Fblack\n.. |Gitter| image:: https:\u002F\u002Fbadges.gitter.im\u002Fgeoopt\u002Fcommunity.png\n   :target: https:\u002F\u002Fgitter.im\u002Fgeoopt\u002Fcommunity\n   \n   \n","geoopt\n======\n\n|Python Package Index| |Read The Docs| |Build Status| |Coverage Status| |Codestyle Black| |Gitter|\n\n流形感知的 ``pytorch.optim``。\n\n非官方实现，用于 `“黎曼自适应优化方法”`_ ICLR2019 及更多内容。\n\n安装\n------------\n请确保已安装 pytorch>=2.0.1。\n\n有两种方式可以安装 geoopt：\n\n1. GitHub（目前推荐），因为开发仍在积极进行中。\n\n.. code-block:: bash\n\n    pip install git+https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt.git\n\n\n2. pypi（这可能会显著落后于主分支，但会尽可能保持最新）。\n\n.. code-block:: bash\n\n    pip install geoopt\n\n一旦项目达到稳定阶段，推荐的安装方式将会改变。目前，由于我们正在积极开发并实现新功能，pypi 版本仍落后于主分支。\n\nPyTorch 支持\n~~~~~~~~~~~~~~~\nGeoopt 官方支持 **PyTorch 最新两个稳定版本** 或最新的主要发布版。\n\n目前已完成的工作\n-------------------\n\n工作仍在进行中，但您已经可以使用它了。请注意，API 在未来的版本中可能会发生变化。\n\n张量\n~~~~~~~\n\n-  ``geoopt.ManifoldTensor`` - 类似于 torch.Tensor，但增加了 ``manifold`` 关键字参数。\n-  ``geoopt.ManifoldParameter`` - 同上，在 ``torch.nn.Module.parameters`` 中被正确识别为子类。\n\n以上所有容器都具有特殊方法，可用于将其作为特定流形上的点进行操作：\n\n-  ``.proj_()`` - 将点就地投影到流形上。\n-  ``.proju(u)`` - 将向量 ``u`` 投影到切空间。在使用以下所有方法之前，都需要先对向量进行投影。\n-  ``.egrad2rgrad(u)`` - 将梯度 ``u`` 投影到黎曼流形上。\n-  ``.inner(u, v=None)`` - 在该点计算两个 **切向量** 的内积。传入的向量无需再投影，假设它们已经处于切空间中。\n-  ``.retr(u)`` - 根据向量 ``u`` 进行缩映射。\n-  ``.expmap(u)`` - 根据向量 ``u`` 进行指数映射（如果无法以闭式表达，则使用最佳近似值）。\n-  ``.transp(v, u)`` - 沿方向 ``u`` 平行移动向量 ``v``。\n-  ``.retr_transp(v, u)`` - 沿方向 ``u`` 平行移动 ``self`` 和向量 ``v``（以及可能的其他向量）（返回结果为普通张量）。\n\n流形\n~~~~~~~~~\n\n-  ``geoopt.Euclidean`` - 带有欧几里得度量的无约束实数空间流形。\n-  ``geoopt.Stiefel`` - 矩阵 Stiefel 流形，满足 ``A in R^{n x p} : A^t A=I``, ``n >= p``。\n-  ``geoopt.Sphere`` - 单位球面流形 ``||x||=1``。\n-  ``geoopt.BirkhoffPolytope`` - 双随机矩阵流形。\n-  ``geoopt.Stereographic`` - 常曲率立体投影模型。\n-  ``geoopt.SphereProjection`` - 球面立体投影模型。\n-  ``geoopt.PoincareBall`` -  `庞加莱圆盘模型 \u003Chttps:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPoincar%C3%A9_disk_model>`_。\n-  ``geoopt.Lorentz`` -  `双曲面模型 \u003Chttps:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHyperboloid_model>`_。\n-  ``geoopt.ProductManifold`` - 流形乘积构造器。\n-  ``geoopt.Scaled`` - 流形的缩放版本。与 ``ProductManifold`` 结合时，类似于 `学习乘积空间中的混合曲率表示 \u003Chttps:\u002F\u002Fopenreview.net\u002Fforum?id=HJxeWnCcF7>`_。\n-  ``geoopt.SymmetricPositiveDefinite`` - 对称正定矩阵流形。\n-  ``geoopt.UpperHalf`` - 西格尔上半平面流形。支持黎曼和芬斯勒度量，如 `图嵌入的对称空间：一种芬斯勒-黎曼方法 \u003Chttps:\u002F\u002Farxiv.org\u002Fabs\u002F2106.04941>`_ 所述。\n-  ``geoopt.BoundedDomain`` - 西格尔有界域流形。支持黎曼和芬斯勒度量。\n\n所有流形都实现了在流形上操作张量以及处理切向量所需的方法，以便在通用场景中使用。更多信息请参阅 `文档`_。\n\n优化器\n~~~~~~~~~~\n\n-  ``geoopt.optim.RiemannianSGD`` - 是 ``torch.optim.SGD`` 的子类，具有相同的 API。\n-  ``geoopt.optim.RiemannianAdam`` - 是 ``torch.optim.Adam`` 的子类。\n\n采样器\n~~~~~~~~\n\n-  ``geoopt.samplers.RSGLD`` - 黎曼随机梯度朗之万动力学。\n-  ``geoopt.samplers.RHMC`` - 黎曼哈密顿蒙特卡洛。\n-  ``geoopt.samplers.SGRHMC`` - 随机梯度黎曼哈密顿蒙特卡洛。\n\n\n层\n~~~~~~\n实验性的 ``geoopt.layers`` 模块允许将 geoopt 嵌入到深度学习中。\n\n引用 Geoopt\n~~~~~~~~~~~~~\n如果您在研究中发现该项目有用，请在参考文献中添加以下 BibTeX 条目并予以引用。\n\n.. code:: bibtex\n\n    @misc{geoopt2020kochurov,\n        title={Geoopt: PyTorch 中的黎曼优化},\n        author={Max Kochurov、Rasul Karimov 和 Serge Kozlukov},\n        year={2020},\n        eprint={2005.02819},\n        archivePrefix={arXiv},\n        primaryClass={cs.CG}\n    }\n\n捐赠\n~~~~~~~~~\nETH: 0x008319973D4017414FdF5B3beF1369bA78275C6A\n   \n\n.. _“黎曼自适应优化方法”: https:\u002F\u002Fopenreview.net\u002Fforum?id=r1eiqi09K7\n.. _文档: https:\u002F\u002Fgeoopt.readthedocs.io\u002Fen\u002Flatest\u002Fmanifolds.html\n\n\n.. |Python Package Index| image:: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fgeoopt.svg\n   :target: https:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fgeoopt\n.. |Read The Docs| image:: https:\u002F\u002Freadthedocs.org\u002Fprojects\u002Fgeoopt\u002Fbadge\u002F?version=latest\n   :target: https:\u002F\u002Fgeoopt.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest\n   :alt: 文档状态\n.. |Build Status| image:: https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Factions\u002Fworkflows\u002Ftesting.yml\u002Fbadge.svg?branch=master\n   :target: https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Factions\u002Fworkflows\u002Ftesting.yml\n.. |Coverage Status| image:: https:\u002F\u002Fcodecov.io\u002Fgh\u002Fgeoopt\u002Fgeoopt\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg?token=HOI5LD0VWF\n   :target: https:\u002F\u002Fcodecov.io\u002Fgh\u002Fgeoopt\u002Fgeoopt\n.. |Codestyle Black| image:: https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fcode%20style-black-000000.svg\n   :target: https:\u002F\u002Fgithub.com\u002Fambv\u002Fblack\n.. |Gitter| image:: https:\u002F\u002Fbadges.gitter.im\u002Fgeoopt\u002Fcommunity.png\n   :target: https:\u002F\u002Fgitter.im\u002Fgeoopt\u002Fcommunity","# Geoopt 快速上手指南\n\nGeoopt 是一个基于 PyTorch 的黎曼优化（Riemannian Optimization）库，支持在多种流形（如球面、双曲空间、Stiefel 流形等）上进行梯度下降和自适应优化。\n\n## 环境准备\n\n- **操作系统**：Linux, macOS, Windows\n- **Python 版本**：建议 Python 3.8+\n- **核心依赖**：\n  - `PyTorch` >= 2.0.1（官方支持最新的两个稳定版本或最新主版本）\n- **可选依赖**：无特殊要求，标准科学计算环境即可\n\n## 安装步骤\n\n由于该项目处于活跃开发阶段，推荐直接从 GitHub 安装以获取最新功能。\n\n### 方式一：从 GitHub 安装（推荐）\n\n```bash\npip install git+https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt.git\n```\n\n*国内用户若下载缓慢，可尝试配置 pip 使用国内镜像源加速克隆过程，或直接使用方式二（注意版本可能滞后）。*\n\n### 方式二：从 PyPI 安装\n\n```bash\npip install geoopt\n```\n\n## 基本使用\n\n以下示例展示如何在单位球面（Sphere Manifold）上创建一个参数，并使用黎曼 SGD 优化器进行更新。\n\n### 1. 导入库与定义流形\n\n```python\nimport torch\nimport geoopt\n\n# 定义球面流形\nmanifold = geoopt.Sphere()\n\n# 创建一个位于流形上的随机参数 (维度为 3)\n# 初始化后会自动投影到流形上\nparam = geoopt.ManifoldParameter(torch.randn(3), manifold=manifold)\n\n# 验证参数是否在流形上 (范数应接近 1)\nprint(f\"Norm: {param.norm().item():.6f}\") \n```\n\n### 2. 定义优化器与训练循环\n\n```python\n# 定义简单的损失函数：最小化参数与目标向量 [1, 0, 0] 的距离\ntarget = torch.tensor([1.0, 0.0, 0.0])\n\n# 创建黎曼 SGD 优化器\noptimizer = geoopt.optim.RiemannianSGD([param], lr=0.01)\n\n# 模拟几步优化过程\nfor step in range(100):\n    optimizer.zero_grad()\n    \n    # 计算欧几里得梯度\n    loss = (param - target).pow(2).sum()\n    loss.backward()\n    \n    # 执行黎曼更新步 (自动处理投影和切空间运算)\n    optimizer.step()\n    \n    if (step + 1) % 20 == 0:\n        print(f\"Step {step+1}, Loss: {loss.item():.6f}, Norm: {param.norm().item():.6f}\")\n```\n\n### 核心概念简述\n- **ManifoldTensor \u002F ManifoldParameter**: 带有流形属性的张量，自动管理投影。\n- **常用流形**: `geoopt.Euclidean`, `geoopt.Stiefel`, `geoopt.PoincareBall`, `geoopt.Lorentz` 等。\n- **优化器**: `geoopt.optim.RiemannianSGD`, `geoopt.optim.RiemannianAdam`，API 与原生 PyTorch 完全兼容。","某生物科技公司算法团队正在构建基于双曲几何的蛋白质层级结构嵌入模型，旨在更精准地捕捉分子间的演化距离。\n\n### 没有 geoopt 时\n- 开发者需手动编写复杂的黎曼梯度投影代码，极易因数学公式推导错误导致模型无法收敛。\n- 标准 PyTorch 优化器（如 Adam）直接在欧氏空间更新参数，破坏了双曲空间的约束条件，导致嵌入点“飞出”有效流形区域。\n- 缺乏现成的双曲空间算子（如指数映射、平行移动），每次实验都要重复造轮子，研发周期被大幅拉长。\n- 调试困难，难以区分是模型架构问题还是底层几何运算实现有误，排查成本极高。\n\n### 使用 geoopt 后\n- 直接调用 `geoopt.PoincareBall` 定义流形，利用内置的 `.egrad2rgrad` 自动处理梯度投影，确保数学严谨性。\n- 无缝切换至 `geoopt.optim.RiemannianAdam`，在保持原有训练循环结构的同时，保证参数更新始终落在双曲流形内。\n- 复用库中高度优化的 `.expmap` 和 `.transp` 等算子，将原本数周的底层开发工作缩短为几小时的集成测试。\n- 依托成熟的 API 设计，团队能快速迭代不同曲率假设，专注于生物语义分析而非底层数学实现。\n\ngeoopt 通过将复杂的黎曼几何优化封装为直观的 PyTorch 接口，让研究人员能零门槛地在非欧几里得空间中训练高性能深度学习模型。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fgeoopt_geoopt_d0a083fe.png","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fgeoopt_937fb17f.png",null,"https:\u002F\u002Fgithub.com\u002Fgeoopt",[18,22,26],{"name":19,"color":20,"percentage":21},"Python","#3572A5",99.5,{"name":23,"color":24,"percentage":25},"Makefile","#427819",0.3,{"name":27,"color":28,"percentage":29},"Nix","#7e7eff",0.2,1053,93,"2026-04-06T15:26:26","NOASSERTION",1,"","未说明",{"notes":38,"python":36,"dependencies":39},"该工具是 PyTorch 的黎曼优化扩展库。官方支持 PyTorch 最新的两个稳定版本或最新的主要版本。目前项目处于活跃开发阶段，建议通过 GitHub 安装以获取最新功能，PyPI 版本可能滞后。API 在未来版本中可能会发生变化。",[40],"torch>=2.0.1",[42],"开发框架",[44,45,46,47,48],"optimization","pytorch","riemannian-optimization","riemannian-geometry","riemannian-manifold",2,"ready","2026-03-27T02:49:30.150509","2026-04-07T13:29:03.024790",[54,59,64,69,74,79],{"id":55,"question_zh":56,"answer_zh":57,"source_url":58},22152,"如何正确初始化 ManifoldParameter 以避免梯度报错？","如果随机初始化的参数不在流形上，需要使用 `.proj_()` 方法进行投影。由于这是原地操作且发生在梯度计算之前，必须将其包裹在 `with torch.no_grad():` 块中。示例代码：\n```python\nX = geoopt.ManifoldParameter(torch.randn(20, 10), manifold=stiefel)\nwith torch.no_grad():\n    X.proj_()\n```\n这不会阻碍后续的反向传播，因为此时还没有梯度流动。","https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fissues\u002F97",{"id":60,"question_zh":61,"answer_zh":62,"source_url":63},22153,"将模型移动到 CUDA 时出现 'Expected object of backend CUDA but got backend CPU' 错误怎么办？","这是因为调用 `model.cuda()` 时，只会移动模块中的张量和参数，而不会自动移动附加在参数上的流形对象（如 PoincareBall 的曲率参数）。\n解决方案有两种：\n1. 手动将流形移动到设备：\n```python\ndevice = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\nfor p in model.parameters():\n    if isinstance(p, (geoopt.ManifoldParameter, geoopt.ManifoldTensor)):\n        p.manifold.to(device)\n```\n2. （推荐）将流形实例作为父模块的属性附加，这样 `module.cuda()` 就能自动处理流形的设备迁移。","https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fissues\u002F81",{"id":65,"question_zh":66,"answer_zh":67,"source_url":68},22154,"PoincareBall 中的参数 `c` 代表什么含义？","在 `PoincareBall` 中，参数 `c` 定义的是**负曲率**（negative curvature），而不是直接的曲率值。这是一个反直觉但符合某些文献约定的设计。球的半径由公式 `1\u002Fsqrt(c)` 决定。使用时需注意不要将其误解为正曲率值，以免导致几何计算不一致。","https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fissues\u002F59",{"id":70,"question_zh":71,"answer_zh":72,"source_url":73},22155,"如何在流形上进行随机采样？","目前库倾向于实现特定于流形的随机方法（如 `random_.*`），而不是通用的随机采样器。对于需要生成流形上可行点的场景，可以使用 `new_empty` 或 `regular_point` 方法（具体名称可能随版本变化），它们会执行非平凡的操作来构造满足流形约束的点。未来计划引入通用的 `Sampler` 接口，通过 `new_empty()` 结合指数映射（expmap）在随机方向上生成样本。","https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fissues\u002F30",{"id":75,"question_zh":76,"answer_zh":77,"source_url":78},22156,"使用 RiemannianSGD 优化器配合 Distributed Data Parallel (DDP) 时梯度同步有问题吗？","是的，已知在使用 DDP 时，`geoopt.optim.RiemannianSGD`（或 RiemannianAdam）可能无法正确同步不同设备间的梯度，而标准的 `torch.optim.SGD` 则工作正常。这是因为 DDP 在反向传播期间同步梯度，而黎曼优化器的某些内部实现（如特定的原地拷贝操作）可能干扰了这一过程。如果遇到此问题，建议检查是否使用了过时的内部优化函数，或暂时回退到标准优化器验证是否是库的兼容性问题。维护者曾指出需替换某些内部函数为标准的 `copy` 操作以解决此类并发问题。","https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fissues\u002F168",{"id":80,"question_zh":81,"answer_zh":82,"source_url":63},22157,"应该为每个模块创建独立的 PoincareBall 实例还是共享一个？","虽然可以为每个模块创建独立的球实例，但为了简化设备管理（特别是 CUDA 上下文）并保持一致性，通常建议创建一个共享的球实例并在所有需要的 `ManifoldParameter` 之间传递。这样可以确保所有参数都在同一个几何空间中进行优化，并减少因多个流形实例设备不同步导致的潜在错误。",[84,89,94,99,104,109,114,119,124],{"id":85,"version":86,"summary_zh":87,"released_at":88},135887,"v0.5.1","## 变更内容\n* 杂项：由 @SauravMaheshkar 在 https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fpull\u002F201 中创建 `pyproject.toml`\n* 杂项：由 @SauravMaheshkar 在 https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fpull\u002F208 中移除 `requirements-dev`\n* GitHub：由 @SauravMaheshkar 在 https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fpull\u002F211 中重构社区相关文件\n* 由 @ferrine 在 https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fpull\u002F213 中创建 `.readthedocs.yml`\n* PyTorch 2.0：由 @ferrine 在 https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fpull\u002F217 中实现\n\n## 新贡献者\n* @SauravMaheshkar 在 https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fpull\u002F201 中完成了首次贡献\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fcompare\u002Fv.0.5.1...v0.5.1","2023-06-23T07:56:59",{"id":90,"version":91,"summary_zh":92,"released_at":93},135888,"v0.5.0","## 变更内容\n* @ferrine 在 https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fpull\u002F190 中修复了拼写错误\n* @gatoniel 在 https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fpull\u002F163 中使 StereographicProductManifold 在乘积流形中使用陀螺向量空间函数\n* @ferrine 举办了研讨会，相关讨论见 https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fpull\u002F192\n\n## 新贡献者\n* @gatoniel 在 https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fpull\u002F163 中完成了首次贡献\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fcompare\u002Fv0.4.1...v0.5.0","2022-06-29T15:39:50",{"id":95,"version":96,"summary_zh":97,"released_at":98},135889,"v0.4.1","## 变更内容\n* 由 @ferrine 在 https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fpull\u002F186 中添加了针对 PyTorch 1.10.0 的测试\n* 由 @ferrine 在 https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fpull\u002F189 中添加了一项测试，并修复了深拷贝和浅拷贝的问题\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fgeoopt\u002Fgeoopt\u002Fcompare\u002Fv0.4.0...v0.4.1","2022-03-15T12:25:50",{"id":100,"version":101,"summary_zh":102,"released_at":103},135890,"v0.4.0","geoopt (0.4.0)\r\n=====================\r\n\r\n新特性\r\n------\r\n* 新增对称正定流形 (#153)\r\n* 新增西格尔流形：上半平面模型和有界域模型，支持黎曼度量和芬斯勒度量 (#179)\r\n\r\n维护\r\n----\r\n* 创建 Pull Request 模板 (#154)\r\n* 更新针对 PyTorch 1.9.0 的测试用例\r\n\r\n缺陷修复\r\n--------\r\n* 修复优化器中的步长递增问题 (#165)\r\n","2021-09-02T10:29:26",{"id":105,"version":106,"summary_zh":107,"released_at":108},135891,"v0.4.0rc1","geoopt (0.4.0rc1)\r\n=====================\r\n\r\n新特性\r\n------\r\n* 新增对称正定流形 (#153)\r\n* 新增西格尔流形：上半平面模型和有界域模型，支持黎曼度量和芬斯勒度量 (#179)\r\n\r\n维护\r\n----\r\n* 创建 Pull Request 模板 (#154)\r\n* 更新针对 PyTorch 1.9.0 的测试用例\r\n\r\n缺陷修复\r\n--------\r\n* 修复优化器中的步长递增问题 (#165)\r\n","2021-07-01T17:51:48",{"id":110,"version":111,"summary_zh":112,"released_at":113},135892,"v0.3.1","解决 PyTorch 夜间版及即将发布的 PyTorch 版本中的问题。","2020-10-29T14:33:38",{"id":115,"version":116,"summary_zh":117,"released_at":118},135893,"v0.3.0","新特性\n------------\n* 黎曼线搜索 (#140)\n* 按组稳定化 (#149)\n\n维护\n----\n* 修复 API 警告（在 #148 中提及）\n* 支持 torch >= 1.4.0","2020-10-07T13:37:20",{"id":120,"version":121,"summary_zh":122,"released_at":123},135894,"v0.2.0","geoopt v0.2.0\r\n=============\r\n\r\n新特性\r\n------\r\n* 毕尔霍夫多面体 (#125)\r\n* 洛伦茨流形 (#121)\r\n* `kappa`-立体投影模型 (#126)\r\n* 稀疏优化器 (#130)\r\n\r\n维护\r\n----\r\n* 针对 pytorch>=1.4、仅 CPU 的测试 (#133)","2020-06-12T13:43:49",{"id":125,"version":126,"summary_zh":127,"released_at":128},135895,"v0.1.2","错误修复\n---------\n* 修复随机方法的缩放问题\n* 修复 Poincaré 方法中的 `cosub` 和 `norm`，它们之前无法正常工作\n* 修复球面距离在小数值下的问题","2019-11-30T14:08:32",[130,142,150,159,167,176],{"id":131,"name":132,"github_repo":133,"description_zh":134,"stars":135,"difficulty_score":136,"last_commit_at":137,"category_tags":138,"status":50},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[139,42,140,141],"Agent","图像","数据工具",{"id":143,"name":144,"github_repo":145,"description_zh":146,"stars":147,"difficulty_score":136,"last_commit_at":148,"category_tags":149,"status":50},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[42,140,139],{"id":151,"name":152,"github_repo":153,"description_zh":154,"stars":155,"difficulty_score":49,"last_commit_at":156,"category_tags":157,"status":50},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",142651,"2026-04-06T23:34:12",[42,139,158],"语言模型",{"id":160,"name":161,"github_repo":162,"description_zh":163,"stars":164,"difficulty_score":49,"last_commit_at":165,"category_tags":166,"status":50},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[42,140,139],{"id":168,"name":169,"github_repo":170,"description_zh":171,"stars":172,"difficulty_score":49,"last_commit_at":173,"category_tags":174,"status":50},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[175,42],"插件",{"id":177,"name":178,"github_repo":179,"description_zh":180,"stars":181,"difficulty_score":136,"last_commit_at":182,"category_tags":183,"status":50},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[158,140,139,42]]