快速开始
Torchdyn提供了实用工具和层,可以轻松构建数值深度学习模型。例如,神经微分方程:
from torchdyn.core import NeuralODE
# 在这里使用你偏好的torch.nn.Module
f = nn.Sequential(nn.Conv2d(1, 32, 3),
nn.Softplus(),
nn.Conv2d(32, 1, 3)
)
nde = NeuralODE(f)
这样你就有了一个可训练的模型。你可以随意将Torchdyn类与任何PyTorch模块结合,构建复合模型。我们还提供额外的工具来构建自定义神经微分方程和隐式模型,包括数值方法的函数式API。Torchdyn不仅仅包含NeuralODE
和NeuralSDE
类:还有教程、各种GPU兼容数值方法的函数式API以及基准测试。
欢迎为库贡献你的基准测试、任务和数值深度学习工具!无需重复造轮子 :)
安装
稳定版本:
pip install torchdyn
或者,你可以按照"贡献"中概述的步骤,使用poetry为torchdyn
构建虚拟开发环境。
文档
查看我们的文档以获取更多信息。
简介
近期的一些研究[1,2, 3, 4]重新激发了人们对微分方程、深度学习和动力系统融合的兴趣。现代深度学习框架如PyTorch,加上计算资源的进一步改进,使得神经网络的连续版本(可追溯到80年代的提议[5])终于得以实现,为经典机器学习问题提供了新的视角。
我们探索了可微分编程如何释放深度学习的效力,以加速科学领域的进展,包括控制、流体动力学以及复杂动力系统的预测。相反,我们专注于由数值方法和信号处理驱动的模型,以推进人工智能在视觉或自然语言等经典领域的发展。
通过提供集中、易于访问的模型模板集合、教程和应用笔记本,我们希望加速这一领域的研究,并最终将神经微分方程和隐式模型确立为控制、系统识别和一般机器学习任务的有效工具。
依赖
torchdyn
利用现代PyTorch最佳实践,并使用pytorch-lightning
[6]处理训练。我们使用dgl
[7]的图神经网络(GNNs) API构建图神经ODE。完整的参考列表,请查看pyproject.toml
。我们提供了完整的ODE求解器和敏感性方法套件,扩展了torchdiffeq
[1]提供的功能。我们对torchsde
[7]和torchcde
[8]有轻度依赖。
应用和教程
torchdyn
包含各种为实践者和研究人员设计的自包含快速入门示例/教程。参考教程readme
贡献
torchdyn
旨在成为一个社区努力:我们欢迎所有与连续和隐式深度学习相关的教程、模型变体、数值方法和应用的贡献。我们没有特定的风格要求,但我们认同Jeremy Howard的许多想法。
我们使用poetry
来管理需求、创建虚拟Python环境和打包。要安装poetry
,请参阅文档。
要设置开发环境,运行poetry install
。例如,poetry run pytest
将在你新创建的环境中运行所有torchdyn
测试。
poetry
目前不提供根据所需的cuda
和OS
选择torch
轮子的方法,它会安装一个不支持GPU的版本。对于CUDA torch
轮子,
运行poetry run poe autoinstall-torch-cuda
,它将根据你的CUDA配置自动安装 PyTorch。
如果你希望在新创建的poetry环境中运行jupyter
笔记本,使用poetry run ipython kernel install --user --name=torchdyn
并切换笔记本内核。
**选择工作内容:**总是有正在进行的工作涉及新功能、测试和教程。如果你希望开发当前未在进行中的其他功能,请随时通过Slack或电子邮件联系我们。我们很乐意讨论细节。
引用我们
如果你发现Torchdyn对你的研究或应用项目有价值:
@article{politorchdyn,
title={TorchDyn: Implicit Models and Neural Numerical Methods in PyTorch},
author={Poli, Michael and Massaroli, Stefano and Yamashita, Atsushi and Asama, Hajime and Park, Jinkyoo and Ermon, Stefano}
}