Cette bibliothèque fournit des solveurs d'équation différentielle stochastique (SDE) avec un support GPU et une rétropropagation efficace.

pip install torchsdeExigences: python> = 3,8 et pytorch> = 1,6.0.
Disponible ici.
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[0], ts[-1]].
# ys will have shape (t_size, batch_size, state_size)
ys = torchsde . sdeint ( sde , y0 , ts ) examples/demo.ipynb donne un court guide sur la façon de résoudre les SDE, y compris des points subtils tels que la fixation de l'aléatoire dans le solveur et le choix des types de bruit .
examples/latent_sde.py apprend une équation différentielle stochastique latente , comme dans la section 5 de [1]. L'exemple correspond à un SDE aux données, tout en le régularisant comme un processus antérieur Ornstein-Uhlenbeck. Le modèle peut être considéré comme un autoencodeur variationnel avec son SDE postérieur antérieur et approximatif. Cet exemple peut être exécuté via
python -m examples.latent_sde --train-dir < TRAIN_DIR > Le programme produit des chiffres sur le chemin spécifié par <TRAIN_DIR> . La formation devrait se stabiliser après 500 itérations avec les hyperparamètres par défaut.
examples/sde_gan.py apprend un SDE en tant que Gan, comme dans [2], [3]. L'exemple entraîne un SDE comme générateur d'un GaN, tout en utilisant un CDE neuronal [4] comme discriminateur. Cet exemple peut être exécuté via
python -m examples.sde_ganSi vous avez trouvé cette base de code utile dans votre recherche, veuillez envisager de citer l'un ou les deux:
@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}
}
[1] Xuechen Li, Ting-Kam Leonard Wong, Ricky TQ Chen, David Duvenaud. "Gradients évolutifs pour les équations différentielles stochastiques". Conférence internationale sur l'intelligence artificielle et les statistiques. 2020. [Arxiv]
[2] Patrick Kidger, James Foster, Xuechen Li, Harald Oberhauser, Terry Lyons. "SDE neuronal en tant que Gans de dimension infinie". Conférence internationale sur l'apprentissage automatique 2021. [Arxiv]
[3] Patrick Kidger, James Foster, Xuechen Li, Terry Lyons. "Gradient efficace et précis pour les SDE neuronaux". 2021. [Arxiv]
[4] Patrick Kidger, James Morrill, James Foster, Terry Lyons, "Équations différentielles contrôlées neurales pour les séries chronologiques irrégulières". Neural Information Processing Systems 2020. [Arxiv]
Il s'agit d'un projet de recherche, pas d'un produit Google officiel.