Theseus 项目介绍
Theseus 是一个高效且不依赖特定应用的库,用于在 PyTorch 中构建自定义的非线性优化层,支持在机器人和视觉领域中构建多种问题作为端到端可微分的架构。
项目背景
Theseus 提供了一种通用的方法用于编码归纳先验,因为目标函数可以部分由神经模型参数化,部分由领域专家模型微分处理。通过优化器进行微分,可以保留计算梯度的能力,使得神经模型可以在最终任务损失上得到训练,同时还能够从优化器中所捕获的先验中获益。
核心特点
应用无关的接口
Theseus 实现了一个易用的接口,可用于构建自定义优化层并将其插入到任意神经架构中。目前支持的可微分特性包括:
- 二阶非线性优化器,如 Gauss-Newton (GN)、Levenberg–Marquardt (LM)、信赖域法和狗腿法。
- 其他非线性优化器,如交叉熵法 (CEM)。
- 线性求解器,支持稠密(如 Cholesky, LU)和稀疏(如 CHOLMOD, LU(仅限 GPU))求解器。
- 常用的成本函数和自动微分成本函数(AutoDiffCostFunction)、鲁棒成本函数(RobustCostFunction)。
- 基于 Lie 群的几何学和机器人运动学。
基于效率的设计
Theseus 提供了许多提高计算速度和减少内存消耗的特性:
- 稀疏线性求解器的支持。
- 批处理和 GPU 加速。
- 自动向量化。
- 各种反向传播模式,如隐式、截断、直接损失最小化(DLM)和采样(LEO)。
入门指南
前置条件
强烈建议在 venv 或 conda 环境中安装 Theseus,支持 Python 3.8 至 3.10。安装 Theseus 之前需确保已安装 torch
。
安装方法
从 PyPI 安装
pip install theseus-ai
更多 CUDA 版本的支持可从源码安装或使用构建脚本。
从源码安装
可通过以下命令从源码安装 Theseus:
git clone https://github.com/facebookresearch/theseus.git && cd theseus
pip install -e .
如需 BaSpaCho 扩展支持,请参照具体安装步骤。
示例
Theseus 提供了简单的示例代码展示了如何用 Theseus 层通过 Adams 优化器和 MSE 损失函数学习 x
参数。更多教程及示例可以参考项目中的相关文档。
引用 Theseus
如果在您的工作中使用到 Theseus,请引用其论文。
许可
Theseus 采用 MIT 许可证。详细信息见项目中的许可证文件。
其他信息
希望加入 Theseus 社区、报告问题或帮助改进项目的朋友可以通过 GitHub 上的讨论区、问题跟踪系统和贡献指南参与进来。