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.
Files changed (38) hide show
  1. {torchode-0.2.0 → torchode-1.0.0}/CHANGELOG.md +4 -0
  2. torchode-1.0.0/CITATION.cff +28 -0
  3. {torchode-0.2.0 → torchode-1.0.0}/PKG-INFO +2 -2
  4. torchode-1.0.0/docs/backprop.md +24 -0
  5. {torchode-0.2.0 → torchode-1.0.0}/mkdocs.yml +1 -0
  6. {torchode-0.2.0 → torchode-1.0.0}/pyproject.toml +1 -1
  7. {torchode-0.2.0 → torchode-1.0.0}/torchode/__init__.py +1 -1
  8. {torchode-0.2.0 → torchode-1.0.0}/.github/workflows/python-package.yml +0 -0
  9. {torchode-0.2.0 → torchode-1.0.0}/.gitignore +0 -0
  10. {torchode-0.2.0 → torchode-1.0.0}/.readthedocs.yaml +0 -0
  11. {torchode-0.2.0 → torchode-1.0.0}/LICENSE +0 -0
  12. {torchode-0.2.0 → torchode-1.0.0}/README.md +0 -0
  13. {torchode-0.2.0 → torchode-1.0.0}/docs/README.md +0 -0
  14. {torchode-0.2.0 → torchode-1.0.0}/docs/comparison.md +0 -0
  15. {torchode-0.2.0 → torchode-1.0.0}/docs/extra-args.md +0 -0
  16. {torchode-0.2.0 → torchode-1.0.0}/docs/extra-stats.ipynb +0 -0
  17. {torchode-0.2.0 → torchode-1.0.0}/docs/jit.ipynb +0 -0
  18. {torchode-0.2.0 → torchode-1.0.0}/docs/nd-data.md +0 -0
  19. {torchode-0.2.0 → torchode-1.0.0}/docs/requirements.in +0 -0
  20. {torchode-0.2.0 → torchode-1.0.0}/docs/requirements.txt +0 -0
  21. {torchode-0.2.0 → torchode-1.0.0}/docs/step-size-controllers.md +0 -0
  22. {torchode-0.2.0 → torchode-1.0.0}/docs/torchdiffeq.ipynb +0 -0
  23. {torchode-0.2.0 → torchode-1.0.0}/torchode/adjoints.py +0 -0
  24. {torchode-0.2.0 → torchode-1.0.0}/torchode/interface.py +0 -0
  25. {torchode-0.2.0 → torchode-1.0.0}/torchode/interpolation.py +0 -0
  26. {torchode-0.2.0 → torchode-1.0.0}/torchode/problems.py +0 -0
  27. {torchode-0.2.0 → torchode-1.0.0}/torchode/single_step_methods/__init__.py +0 -0
  28. {torchode-0.2.0 → torchode-1.0.0}/torchode/single_step_methods/base.py +0 -0
  29. {torchode-0.2.0 → torchode-1.0.0}/torchode/single_step_methods/dopri5.py +0 -0
  30. {torchode-0.2.0 → torchode-1.0.0}/torchode/single_step_methods/euler.py +0 -0
  31. {torchode-0.2.0 → torchode-1.0.0}/torchode/single_step_methods/heun.py +0 -0
  32. {torchode-0.2.0 → torchode-1.0.0}/torchode/single_step_methods/runge_kutta.py +0 -0
  33. {torchode-0.2.0 → torchode-1.0.0}/torchode/single_step_methods/tsit5.py +0 -0
  34. {torchode-0.2.0 → torchode-1.0.0}/torchode/solution.py +0 -0
  35. {torchode-0.2.0 → torchode-1.0.0}/torchode/status_codes.py +0 -0
  36. {torchode-0.2.0 → torchode-1.0.0}/torchode/step_size_controllers.py +0 -0
  37. {torchode-0.2.0 → torchode-1.0.0}/torchode/terms.py +0 -0
  38. {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.2.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 :: 4 - Beta
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.
@@ -12,6 +12,7 @@ plugins:
12
12
  nav:
13
13
  - "Introduction": README.md
14
14
  - step-size-controllers.md
15
+ - backprop.md
15
16
  - jit.ipynb
16
17
  - extra-args.md
17
18
  - extra-stats.ipynb
@@ -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 :: 4 - Beta",
13
+ "Development Status :: 5 - Production/Stable",
14
14
  "Intended Audience :: Developers",
15
15
  "Intended Audience :: Science/Research",
16
16
  "License :: OSI Approved :: MIT License",
@@ -1,6 +1,6 @@
1
1
  """A parallel ODE solver for PyTorch"""
2
2
 
3
- __version__ = "0.2.0"
3
+ __version__ = "1.0.0"
4
4
 
5
5
  from .adjoints import AutoDiffAdjoint, BacksolveAdjoint, JointBacksolveAdjoint
6
6
  from .interface import register_method, solve_ivp
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