TorchLevy is python package that provides torch-based pdf, score calculation and sampling of symmetric alpha stable distribution .
pip install git + https :// github .com / UNIST - LIM - Lab / torchlevy .git
import torch
from torchlevy import LevyStable , stable_dist
alpha = 1.7
x = torch .randn (size = (3 , 200 , 200 ))
# likelihood
likelihood = stable_dist .pdf (x , alpha )
# score function
score = stable_dist .score (x , alpha )
# x10 faster version of levy_stable.rvs()
sample = stable_dist .sample (alpha , beta = 0 , size = (3 , 200 , 200 ))
sampling
score
likelihood
scipy
9.055s
58.837s
14.714s
torchlevy
0.009s (x1000 faster)
0.026s (x2000 faster)
0.003s (x4000 faster)
sampling
score
likelihood
scipy
1.843s
12.668s
3.188s
torchlevy
0.370s (x5 faster)
0.029s (x400 faster)
0.008s (x400 faster)
Gaussian + Levy Tutorial Code
import torch
from torchlevy import LevyGaussian
x = torch .randn (size = (3 , 200 , 200 ))
# score of gaussian+levy via fourier transform
levy_gaussian = LevyGaussian (alpha = 1.7 , sigma_1 = 1 , sigma_2 = 1 )
score = levy_gaussian .score (x )
import torch
from torchlevy import levy_gaussian_score
alpha = 1.8
x = torch .linspace (- 10 , 10 , 100 )
sigma1 = torch .ones (x .size ()) * 0.5
sigma2 = torch .ones (x .size ()) * 0.5
y = levy_gaussian_score (x , alpha = alpha , sigma1 = sigma1 , sigma2 = sigma2 )