# PyTorch Implementation of Differentiable SDE Solvers This library provides stochastic differential equation (SDE) solvers with GPU support and efficient backpropagation.

## Installation

```pip install torchsde
```

Requirements: Python >=3.6 and PyTorch >=1.6.0.

Available here.

## Examples

### Quick example

```import torch
import torchsde

batch_size, state_size, brownian_size = 32, 3, 2
t_size = 20

class SDE(torch.nn.Module):
noise_type = 'general'
sde_type = 'ito'

def __init__(self):
super().__init__()
self.mu = torch.nn.Linear(state_size,
state_size)
self.sigma = torch.nn.Linear(state_size,
state_size * brownian_size)

# Drift
def f(self, t, y):
return self.mu(y)  # shape (batch_size, state_size)

# Diffusion
def g(self, t, y):
return self.sigma(y).view(batch_size,
state_size,
brownian_size)

sde = SDE()
y0 = torch.full((batch_size, state_size), 0.1)
ts = torch.linspace(0, 1, t_size)
# Initial state y0, the SDE is solved over the interval [ts, ts[-1]].
# ys will have shape (t_size, batch_size, state_size)
ys = torchsde.sdeint(sde, y0, ts)
```

### Notebook

`examples/demo.ipynb` gives a short guide on how to solve SDEs, including subtle points such as fixing the randomness in the solver and the choice of noise types.

### Latent SDE

`examples/latent_sde.py` learns a latent stochastic differential equation, as in Section 5 of . The example fits an SDE to data, whilst regularizing it to be like an Ornstein-Uhlenbeck prior process. The model can be loosely viewed as a variational autoencoder with its prior and approximate posterior being SDEs. This example can be run via

```python -m examples.latent_sde --train-dir <TRAIN_DIR>
```

The program outputs figures to the path specified by `<TRAIN_DIR>`. Training should stabilize after 500 iterations with the default hyperparameters.

### Neural SDEs as GANs

`examples/sde_gan.py` learns an SDE as a GAN, as in , . The example trains an SDE as the generator of a GAN, whilst using a neural CDE  as the discriminator. This example can be run via

```python -m examples.sde_gan
```

## Citation

If you found this codebase useful in your research, please consider citing either or both of:

``````@article{li2020scalable,
title={Scalable gradients for stochastic differential equations},
author={Li, Xuechen and Wong, Ting-Kam Leonard and Chen, Ricky T. Q. and Duvenaud, David},
journal={International Conference on Artificial Intelligence and Statistics},
year={2020}
}
``````
``````@article{kidger2021neuralsde,
title={Neural {SDE}s as {I}nfinite-{D}imensional {GAN}s},
author={Kidger, Patrick and Foster, James and Li, Xuechen and Oberhauser, Harald and Lyons, Terry},
journal={International Conference on Machine Learning},
year={2021}
}
``````

## References

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
python (55,580
deep-learning (4,085
pytorch (2,473
deep-neural-networks (474
differential-equations (39
dynamical-systems (22