Neural ODEs and SDEs API Reference
Neural ODE classes, Neural fSDE classes, SDE solvers, and noise models.
Neural ODEs
Targeted Optimized Neural Fractional Ordinary Differential Equations (Neural fODE)
This module provides targeted optimizations for neural networks that can learn to represent fractional differential equations, focusing on high-impact improvements without adding unnecessary complexity.
Key Improvements: - Optimized fractional ODE implementation (proper fractional calculus) - Advanced solver options with better performance - Memory optimization for large inputs - Improved training efficiency - Performance monitoring without overhead
Author: Davian R. Chin, Department of Biomedical Engineering, University of Reading Targeted Optimization: September 2025
- class hpfracc.ml.neural_ode.NeuralODEConfig(input_dim=2, hidden_dim=64, output_dim=2, num_layers=3, activation='tanh', use_adjoint=True, solver='dopri5', rtol=1e-05, atol=1e-05, fractional_order=None, device=None, dtype=torch.float32, enable_performance_monitoring=False, memory_optimization=True, use_advanced_solvers=True)[source]
Bases:
objectTargeted configuration for neural ODE models
- Parameters:
input_dim (int)
hidden_dim (int)
output_dim (int)
num_layers (int)
activation (str)
use_adjoint (bool)
solver (str)
rtol (float)
atol (float)
fractional_order (float | FractionalOrder | None)
device (torch.device | None)
dtype (torch.dtype)
enable_performance_monitoring (bool)
memory_optimization (bool)
use_advanced_solvers (bool)
- fractional_order: float | FractionalOrder | None = None
- __init__(input_dim=2, hidden_dim=64, output_dim=2, num_layers=3, activation='tanh', use_adjoint=True, solver='dopri5', rtol=1e-05, atol=1e-05, fractional_order=None, device=None, dtype=torch.float32, enable_performance_monitoring=False, memory_optimization=True, use_advanced_solvers=True)
- Parameters:
input_dim (int)
hidden_dim (int)
output_dim (int)
num_layers (int)
activation (str)
use_adjoint (bool)
solver (str)
rtol (float)
atol (float)
fractional_order (float | FractionalOrder | None)
device (torch.device | None)
dtype (torch.dtype)
enable_performance_monitoring (bool)
memory_optimization (bool)
use_advanced_solvers (bool)
- Return type:
None
- class hpfracc.ml.neural_ode.BaseNeuralODE(*args, **kwargs)[source]
Bases:
Module,ABCTargeted optimized base class for Neural ODE implementations
- Parameters:
config (NeuralODEConfig)
- __init__(config)[source]
- Parameters:
config (NeuralODEConfig)
- _get_activation(x)[source]
Apply activation function
- Parameters:
x (torch.Tensor)
- Return type:
torch.Tensor
- class hpfracc.ml.neural_ode.NeuralODE(*args, **kwargs)[source]
Bases:
BaseNeuralODETargeted optimized Neural ODE implementation
- Parameters:
- __init__(input_dim, hidden_dim, output_dim, num_layers=3, activation='tanh', use_adjoint=True, solver='dopri5', rtol=1e-05, atol=1e-05)[source]
- forward(x, t)[source]
Optimized forward pass
- Parameters:
x (torch.Tensor)
t (torch.Tensor)
- Return type:
torch.Tensor
- class hpfracc.ml.neural_ode.NeuralFODE(*args, **kwargs)[source]
Bases:
BaseNeuralODETargeted optimized Neural Fractional ODE implementation
- Parameters:
- __init__(input_dim, hidden_dim, output_dim, fractional_order=0.5, num_layers=3, activation='tanh', use_adjoint=True, solver='fractional_euler', rtol=1e-05, atol=1e-05)[source]
- class hpfracc.ml.neural_ode.NeuralODETrainer(model, optimizer='adam', learning_rate=0.001, loss_function='mse')[source]
Bases:
objectTargeted optimized trainer for Neural ODE models
- Parameters:
model (NeuralODE | NeuralFODE)
optimizer (str)
learning_rate (float)
loss_function (str)
- __init__(model, optimizer='adam', learning_rate=0.001, loss_function='mse')[source]
- Parameters:
model (NeuralODE | NeuralFODE)
optimizer (str)
learning_rate (float)
loss_function (str)
- _setup_optimizer(optimizer_type)[source]
Set up optimizer
- Parameters:
optimizer_type (str)
- Return type:
torch.optim.Optimizer
- _setup_loss_function(loss_type)[source]
Set up loss function
- Parameters:
loss_type (str)
- Return type:
torch.nn.Module
- train_step(x, y_target, t)[source]
Optimized training step
- Parameters:
x (torch.Tensor)
y_target (torch.Tensor)
t (torch.Tensor)
- Return type:
- hpfracc.ml.neural_ode.create_neural_ode(model_type='standard', **kwargs)[source]
Factory function to create neural ODE models
- Parameters:
model_type (str)
- Return type:
- hpfracc.ml.neural_ode.create_neural_ode_trainer(model, **kwargs)[source]
Factory function to create targeted neural ODE trainer
- Parameters:
model (NeuralODE | NeuralFODE)
- Return type:
Neural fSDE
Neural Fractional Stochastic Differential Equations
This module provides neural network-based fractional SDEs with adjoint training methods for efficient gradient-based learning.
- class hpfracc.ml.neural_fsde.NeuralFSDEConfig(input_dim=2, hidden_dim=64, output_dim=2, num_layers=3, activation='tanh', use_adjoint=True, solver='dopri5', rtol=1e-05, atol=1e-05, fractional_order=None, device=None, dtype=torch.float32, enable_performance_monitoring=False, memory_optimization=True, use_advanced_solvers=True, diffusion_dim=1, noise_type='additive', drift_net=None, diffusion_net=None, use_sde_adjoint=True, learn_alpha=False)[source]
Bases:
NeuralODEConfigConfiguration for neural fractional SDE models.
- Parameters:
input_dim (int)
hidden_dim (int)
output_dim (int)
num_layers (int)
activation (str)
use_adjoint (bool)
solver (str)
rtol (float)
atol (float)
fractional_order (float | FractionalOrder | None)
device (torch.device | None)
dtype (torch.dtype)
enable_performance_monitoring (bool)
memory_optimization (bool)
use_advanced_solvers (bool)
diffusion_dim (int)
noise_type (str)
drift_net (torch.nn.Module | None)
diffusion_net (torch.nn.Module | None)
use_sde_adjoint (bool)
learn_alpha (bool)
- __init__(input_dim=2, hidden_dim=64, output_dim=2, num_layers=3, activation='tanh', use_adjoint=True, solver='dopri5', rtol=1e-05, atol=1e-05, fractional_order=None, device=None, dtype=torch.float32, enable_performance_monitoring=False, memory_optimization=True, use_advanced_solvers=True, diffusion_dim=1, noise_type='additive', drift_net=None, diffusion_net=None, use_sde_adjoint=True, learn_alpha=False)
- Parameters:
input_dim (int)
hidden_dim (int)
output_dim (int)
num_layers (int)
activation (str)
use_adjoint (bool)
solver (str)
rtol (float)
atol (float)
fractional_order (float | FractionalOrder | None)
device (torch.device | None)
dtype (torch.dtype)
enable_performance_monitoring (bool)
memory_optimization (bool)
use_advanced_solvers (bool)
diffusion_dim (int)
noise_type (str)
drift_net (torch.nn.Module | None)
diffusion_net (torch.nn.Module | None)
use_sde_adjoint (bool)
learn_alpha (bool)
- Return type:
None
- class hpfracc.ml.neural_fsde.NeuralFractionalSDE(*args, **kwargs)[source]
Bases:
BaseNeuralODENeural network-based fractional SDE with adjoint training.
Extends neural ODE framework to fractional stochastic differential equations for modeling stochastic dynamics with memory effects.
The model learns: - Drift function f(t, x): deterministic dynamics - Diffusion function g(t, x): stochastic noise magnitude - Fractional order: memory effects in dynamics
- Parameters:
config (NeuralFSDEConfig)
- __init__(config)[source]
Initialize neural fractional SDE.
- Parameters:
config (NeuralFSDEConfig) – Configuration for the neural fSDE
- drift_function(t, x)[source]
Alias for drift() for compatibility with tests.
- Parameters:
t (torch.Tensor)
x (torch.Tensor)
- Return type:
torch.Tensor
- diffusion_function(t, x)[source]
Alias for diffusion() for compatibility with tests.
- Parameters:
t (torch.Tensor)
x (torch.Tensor)
- Return type:
torch.Tensor
- drift(t, x)[source]
Compute drift function f(t, x).
- Parameters:
t (torch.Tensor) – Time tensor
x (torch.Tensor) – State tensor
- Returns:
Drift vector
- Return type:
torch.Tensor
- diffusion(t, x)[source]
Compute diffusion function g(t, x).
- Parameters:
t (torch.Tensor) – Time tensor
x (torch.Tensor) – State tensor
- Returns:
Diffusion matrix
- Return type:
torch.Tensor
- forward(x0, t, method='euler_maruyama', num_steps=100, seed=None)[source]
Forward pass through neural fractional SDE.
- _solve_fractional_sde_torch(x0, t_start, t_end, num_steps, seed=None)[source]
PyTorch-native fractional SDE solver (Euler-Maruyama).
- hpfracc.ml.neural_fsde.create_neural_fsde(input_dim=None, output_dim=None, hidden_dim=64, num_layers=3, fractional_order=0.5, diffusion_dim=1, noise_type='additive', learn_alpha=False, use_adjoint=True, drift_net=None, diffusion_net=None, config=None)[source]
Factory function to create a neural fractional SDE.
- Parameters:
input_dim (int | None) – Input dimension
output_dim (int | None) – Output dimension
hidden_dim (int) – Hidden layer dimension
num_layers (int) – Number of hidden layers
fractional_order (float) – Initial fractional order
diffusion_dim (int) – Dimension of noise
noise_type (str) – Type of noise (“additive” or “multiplicative”)
learn_alpha (bool) – Whether to learn fractional order
use_adjoint (bool) – Use adjoint method for backpropagation
drift_net (torch.nn.Module | None) – Custom drift network
diffusion_net (torch.nn.Module | None) – Custom diffusion network
config (NeuralFSDEConfig | None)
- Returns:
NeuralFractionalSDE instance
- Return type:
SDE Solvers
Fractional Stochastic Differential Equation Solvers
This module provides comprehensive solvers for fractional SDEs including various numerical methods, adaptive step size control, and error estimation.
Performance Note: - Uses FFT-based convolution for O(N log N) history summation instead of O(N²) - Intelligent backend selection for optimal performance - Multi-backend support (PyTorch, JAX, NumPy/Numba)
- hpfracc.solvers.sde_solvers._get_gamma_function()[source]
Get gamma function through adapter system.
- hpfracc.solvers.sde_solvers._get_intelligent_selector()[source]
Get intelligent backend selector instance.
- hpfracc.solvers.sde_solvers._fft_convolution(coeffs, values, axis=0)[source]
Fast convolution using FFT for O(N log N) performance.
- class hpfracc.solvers.sde_solvers.SDESolution(t, y, fractional_order, method, drift_func, diffusion_func, metadata=None)[source]
Bases:
objectSolution object for SDE solvers.
- Parameters:
- fractional_order: float | FractionalOrder
- class hpfracc.solvers.sde_solvers.FractionalSDESolver(fractional_order, definition='caputo', adaptive=False, rtol=1e-05, atol=1e-08)[source]
Bases:
ABCBase class for fractional SDE solvers.
- A fractional SDE takes the form:
D^α X(t) = f(t, X(t)) dt + g(t, X(t)) dW(t)
- where:
α is the fractional order
f is the drift function
g is the diffusion function
W(t) is a Wiener process
- Parameters:
- __init__(fractional_order, definition='caputo', adaptive=False, rtol=1e-05, atol=1e-08)[source]
Initialize fractional SDE solver.
- Parameters:
fractional_order (float | FractionalOrder) – Fractional order (0 < α < 2)
definition (str) – Type of fractional derivative (“caputo” or “riemann_liouville”)
adaptive (bool) – Use adaptive step size
rtol (float) – Relative tolerance for adaptive stepping
atol (float) – Absolute tolerance for adaptive stepping
- abstract solve(drift, diffusion, x0, t_span, **kwargs)[source]
Solve fractional SDE.
- Parameters:
- Returns:
SDESolution object containing trajectory
- Return type:
- class hpfracc.solvers.sde_solvers.FastHistoryConvolution(alpha, num_steps, dim)[source]
Bases:
objectHelper class for efficient history convolution in fractional SDE solvers.
Currently uses optimized dot product (O(N^2)), but structured to support FFT-based block convolution (O(N log N)) in future updates.
- class hpfracc.solvers.sde_solvers.FractionalEulerMaruyama(*args, **kwargs)[source]
Bases:
FractionalSDESolverFractional Euler-Maruyama method for solving fractional SDEs.
This is a first-order strong convergence method.
- __init__(*args, **kwargs)[source]
Initialize fractional SDE solver.
- Parameters:
fractional_order – Fractional order (0 < α < 2)
definition – Type of fractional derivative (“caputo” or “riemann_liouville”)
adaptive – Use adaptive step size
rtol – Relative tolerance for adaptive stepping
atol – Absolute tolerance for adaptive stepping
- class hpfracc.solvers.sde_solvers.FractionalMilstein(*args, **kwargs)[source]
Bases:
FractionalSDESolverFractional Milstein method for solving fractional SDEs.
This is a second-order strong convergence method with improved accuracy.
- __init__(*args, **kwargs)[source]
Initialize fractional SDE solver.
- Parameters:
fractional_order – Fractional order (0 < α < 2)
definition – Type of fractional derivative (“caputo” or “riemann_liouville”)
adaptive – Use adaptive step size
rtol – Relative tolerance for adaptive stepping
atol – Absolute tolerance for adaptive stepping
- hpfracc.solvers.sde_solvers.solve_fractional_sde(drift, diffusion, x0, t_span, fractional_order=0.5, method='euler_maruyama', num_steps=100, seed=None, **kwargs)[source]
Solve a fractional SDE.
- Parameters:
drift (Callable) – Drift function f(t, x) -> R^d
diffusion (Callable) – Diffusion function g(t, x) -> R^(d x m)
x0 (ndarray) – Initial condition
fractional_order (float | FractionalOrder) – Fractional order (0 < α < 2)
method (str) – Solver method (“euler_maruyama”, “milstein”, “predictor_corrector”)
num_steps (int) – Number of time steps
seed (int | None) – Random seed for Wiener process
**kwargs – Additional solver parameters
- Returns:
SDESolution object
- Return type:
Example
>>> def drift(t, x): ... return -0.5 * x >>> def diffusion(t, x): ... return 0.2 * np.eye(1) >>> x0 = np.array([1.0]) >>> sol = solve_fractional_sde(drift, diffusion, x0, (0, 1), 0.5, num_steps=100) >>> print(sol.y[-1])
- hpfracc.solvers.sde_solvers.solve_fractional_sde_system(drift, diffusion, x0, t_span, fractional_order, method='euler_maruyama', noise_type='additive', num_steps=100, seed=None, **kwargs)[source]
Solve a system of coupled fractional SDEs.
- Parameters:
drift (Callable) – Drift function f(t, x) -> R^d
diffusion (Callable) – Diffusion function g(t, x) -> R^(d x m)
x0 (ndarray) – Initial condition
fractional_order (float | FractionalOrder | List[float]) – Fractional order(s) for system
method (str) – Solver method
noise_type (str) – Type of noise (“additive” or “multiplicative”)
num_steps (int) – Number of time steps
seed (int | None) – Random seed
**kwargs – Additional parameters
- Returns:
SDESolution object
- Return type:
Noise Models
Stochastic Noise Models for Fractional SDEs
This module provides various noise models including Brownian motion, fractional Brownian motion, Lévy processes, and coloured noise.
- class hpfracc.solvers.noise_models.NoiseModel[source]
Bases:
ABCBase class for stochastic noise models.
- class hpfracc.solvers.noise_models.BrownianMotion(scale=1.0)[source]
Bases:
NoiseModelStandard Brownian motion (Wiener process).
Generates independent Gaussian increments with variance dt.
- Parameters:
scale (float)
- __init__(scale=1.0)[source]
Initialize Brownian motion.
- Parameters:
scale (float) – Scaling factor for noise
- class hpfracc.solvers.noise_models.FractionalBrownianMotion(hurst=0.5, scale=1.0)[source]
Bases:
NoiseModelFractional Brownian motion (fBm).
A Gaussian process with long-range dependence characterized by the Hurst exponent H (0 < H < 1).
- class hpfracc.solvers.noise_models.LevyNoise(alpha=1.5, beta=0.0, scale=1.0, location=0.0)[source]
Bases:
NoiseModelLévy noise for jump diffusions.
Uses stable distributions to model heavy-tailed noise.
- class hpfracc.solvers.noise_models.ColouredNoise(correlation_time=1.0, amplitude=1.0, seed=None)[source]
Bases:
NoiseModelColoured noise (Ornstein-Uhlenbeck process).
Gaussian noise with exponential autocorrelation.
- class hpfracc.solvers.noise_models.NoiseConfig(noise_type='brownian', hurst=0.5, scale=1.0, alpha=1.5, beta=0.0, correlation_time=1.0, amplitude=1.0)[source]
Bases:
objectConfiguration for noise models.
- Parameters:
- hpfracc.solvers.noise_models.create_noise_model(config)[source]
Create a noise model from configuration.
- Parameters:
config (NoiseConfig) – Noise configuration
- Returns:
NoiseModel instance
- Return type: