torchode 0.2.0__tar.gz → 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {torchode-0.2.0 → torchode-1.0.0}/CHANGELOG.md +4 -0
- torchode-1.0.0/CITATION.cff +28 -0
- {torchode-0.2.0 → torchode-1.0.0}/PKG-INFO +2 -2
- torchode-1.0.0/docs/backprop.md +24 -0
- {torchode-0.2.0 → torchode-1.0.0}/mkdocs.yml +1 -0
- {torchode-0.2.0 → torchode-1.0.0}/pyproject.toml +1 -1
- {torchode-0.2.0 → torchode-1.0.0}/torchode/__init__.py +1 -1
- {torchode-0.2.0 → torchode-1.0.0}/.github/workflows/python-package.yml +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/.gitignore +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/.readthedocs.yaml +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/LICENSE +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/README.md +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/docs/README.md +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/docs/comparison.md +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/docs/extra-args.md +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/docs/extra-stats.ipynb +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/docs/jit.ipynb +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/docs/nd-data.md +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/docs/requirements.in +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/docs/requirements.txt +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/docs/step-size-controllers.md +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/docs/torchdiffeq.ipynb +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/torchode/adjoints.py +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/torchode/interface.py +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/torchode/interpolation.py +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/torchode/problems.py +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/torchode/single_step_methods/__init__.py +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/torchode/single_step_methods/base.py +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/torchode/single_step_methods/dopri5.py +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/torchode/single_step_methods/euler.py +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/torchode/single_step_methods/heun.py +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/torchode/single_step_methods/runge_kutta.py +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/torchode/single_step_methods/tsit5.py +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/torchode/solution.py +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/torchode/status_codes.py +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/torchode/step_size_controllers.py +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/torchode/terms.py +0 -0
- {torchode-0.2.0 → torchode-1.0.0}/torchode/typing.py +0 -0
|
@@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## 1.0.0 - 2024-09-22
|
|
9
|
+
|
|
10
|
+
After almost a year without any bugs found, we mark this as the first stable release!
|
|
11
|
+
|
|
8
12
|
## 0.2.0 - 2023-11-10
|
|
9
13
|
|
|
10
14
|
### Changed
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
title: torchode
|
|
3
|
+
message: >-
|
|
4
|
+
If you use this software, please cite it using the
|
|
5
|
+
metadata from this file.
|
|
6
|
+
type: software
|
|
7
|
+
authors:
|
|
8
|
+
- given-names: Marten
|
|
9
|
+
family-names: Lienen
|
|
10
|
+
email: m.lienen@tum.de
|
|
11
|
+
- given-names: Stephan
|
|
12
|
+
family-names: Günnemann
|
|
13
|
+
email: s.guennemann@tum.de
|
|
14
|
+
repository-code: "https://github.com/martenlienen/torchode"
|
|
15
|
+
license: MIT
|
|
16
|
+
preferred-citation:
|
|
17
|
+
type: conference-paper
|
|
18
|
+
title: "torchode: A Parallel ODE Solver for PyTorch"
|
|
19
|
+
authors:
|
|
20
|
+
- given-names: Marten
|
|
21
|
+
family-names: Lienen
|
|
22
|
+
email: m.lienen@tum.de
|
|
23
|
+
- given-names: Stephan
|
|
24
|
+
family-names: Günnemann
|
|
25
|
+
email: s.guennemann@tum.de
|
|
26
|
+
collection-title: "The Symbiosis of Deep Learning and Differential Equations II, NeurIPS"
|
|
27
|
+
year: 2022
|
|
28
|
+
url: "https://openreview.net/forum?id=uiKVKTiUYB0"
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: torchode
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.0
|
|
4
4
|
Summary: A parallel ODE solver for PyTorch
|
|
5
5
|
Author-email: Marten Lienen <m.lienen@tum.de>
|
|
6
6
|
Requires-Python: >= 3.8
|
|
7
7
|
Description-Content-Type: text/markdown
|
|
8
|
-
Classifier: Development Status ::
|
|
8
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
9
9
|
Classifier: Intended Audience :: Developers
|
|
10
10
|
Classifier: Intended Audience :: Science/Research
|
|
11
11
|
Classifier: License :: OSI Approved :: MIT License
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Gradients & Backpropagation
|
|
2
|
+
|
|
3
|
+
There are two ways to compute gradients of the dynamics of an ODE, so the neural network
|
|
4
|
+
in the case of neural ODEs, with respect to the solution of the ODE. The first is to
|
|
5
|
+
backpropagate straight through the solver. After all, an ODE solver is just a series of
|
|
6
|
+
simple operations that define a dynamic computation graph that can be backpropagated
|
|
7
|
+
through with pytorch's autograd. This is implemented in `to.AutoDiffAdjoint`, so called
|
|
8
|
+
because it uses the autodiff/autograd mechanism. In general, this is the preferred method
|
|
9
|
+
as long as you have enough memory, because it is fast and gives accurate gradients.
|
|
10
|
+
|
|
11
|
+
If you run out of memory, you can compute gradients by solving the so called adjoint
|
|
12
|
+
equations, which basically solve the ODE backwards and track gradients along the way. This
|
|
13
|
+
is implemented in `to.BacksolveAdjoint`. Solving the adjoint equations requires the
|
|
14
|
+
computation of gradients of the model at different steps in time, which
|
|
15
|
+
`to.BacksolveAdjoint` implements with `torch.func`. If your model is not compatible and
|
|
16
|
+
you get errors because of this, you can fall back to `to.JointBacksolveAdjoint`. This
|
|
17
|
+
computes the model gradients with pytorch's usual autograd and should always work but
|
|
18
|
+
comes with two caveats. However, to make this work, `to.JointBacksolveAdjoint` needs to
|
|
19
|
+
solve the `n` independent adjoint equations jointly as one joint system that is jointly
|
|
20
|
+
discretized. This breaks with torchode's approach of solving each ODE completely
|
|
21
|
+
independently, because the joint discretization introduces a subtle coupling between the
|
|
22
|
+
solutions of your batch of ODEs. Therefore, `to.JointBacksolveAdjoint` should be your
|
|
23
|
+
backpropagation choice of last resort. Furthermore, it is only applicable if all ODEs in
|
|
24
|
+
your batch have the same evaluation points.
|
|
@@ -10,7 +10,7 @@ requires-python = ">= 3.8"
|
|
|
10
10
|
license = {file = "LICENSE"}
|
|
11
11
|
authors = [{name = "Marten Lienen", email = "m.lienen@tum.de"}]
|
|
12
12
|
classifiers = [
|
|
13
|
-
"Development Status ::
|
|
13
|
+
"Development Status :: 5 - Production/Stable",
|
|
14
14
|
"Intended Audience :: Developers",
|
|
15
15
|
"Intended Audience :: Science/Research",
|
|
16
16
|
"License :: OSI Approved :: MIT License",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|