该库提供了随机微分方程(SDE)求解器,并具有GPU支持和有效的反向传播。

pip install torchsde要求: Python> = 3.8和Pytorch> = 1.6.0。
在这里可用。
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提供了有关如何求解SDE的简短指南,包括诸如固定求解器中的随机性和噪声类型的选择之类的微妙点。
examples/latent_sde.py学习一个潜在的随机微分方程,如[1]第5节中。该示例符合SDE的数据,同时将其正规化为像Ornstein-uhlenbeck的先前过程。该模型可以松散地视为具有其先前和近似后部为SDE的变异自动编码器。这个示例可以通过
python -m examples.latent_sde --train-dir < TRAIN_DIR >该程序将数字输出到<TRAIN_DIR>指定的路径。培训应在500次迭代后使用默认的超参数稳定。
examples/sde_gan.py像[2],[3]一样,将SDE学习为gan。该示例将SDE训练为GAN的发电机,而使用神经CDE [4]作为鉴别器。这个示例可以通过
python -m examples.sde_gan如果您发现此代码库在您的研究中有用,请考虑引用以下内容:
@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。 “随机微分方程的可扩展梯度”。国际人工智能与统计会议。 2020。[Arxiv]
[2] Patrick Kidger,James Foster,Xuechen Li,Harald Oberhauser,Terry Lyons。 “神经SDE作为无限维gans”。机器学习国际会议2021。[ARXIV]
[3] Patrick Kidger,James Foster,Xuechen Li,Terry Lyons。 “神经SDE的有效且准确的梯度”。 2021。[arxiv]
[4] Patrick Kidger,James Morrill,James Foster,Terry Lyons,“不规则时间序列的神经控制的微分方程”。神经信息处理系统2020。[arxiv]
这是一个研究项目,而不是官方的Google产品。