Scientific machine learning (SciML) has emerged recently as an effective and powerful tool for data fusion, solving ordinary/partial differential equations (ODEs, PDEs), and learning operator mappings in various scientific and engineering disciplines. Physics-informed neural networks (PINNs) and deep operator networks (DeepONets) are two such models for solving ODEs/PDEs and learning operator mappings, respectively. Quantifying predictive uncertainties is crucial for risk-sensitive applications as well as for efficient and economical design. NeuralUQ is a Python library for uncertainty quantification in various SciML algorithms. In NeuralUQ, each UQ method is decomposed into a surrogate and an inference method for posterior estimation. NeuralUQ has included various surrogates and inference methods, i.e.,
- Surrogates
- Bayesian Neural Networks (BNNs)
- Deterministic Neural Networks, e.g., fully-connected neural networks (FNNs)
- Deep Generative Models, e.g., Generative Adversarial Nets (GANs)
- Inference Methods
- Sampling methods
- Hamiltonian Monte Carlo (HMC)
- Langevin Dynamics (LD)
- No-U-Turn (NUTS)
- Metropolis-adjusted Langevin algorithm (MALA)
- Variational Methods
- Mean-field Variational Inference (MFVI)
- Monte Carlo Dropout (MCD)
- Ensemble Methods
- Deep ensembles (DEns)
- Snapshot ensemble (SEns)
- Laplace approximation (LA)
- Sampling methods
Users can refer to this paper for the design and description, as well as the examples, of the NeuralUQ library:
Users can refer to the following papers for more details on the algorithms:
- A comprehensive review on uncertainty quantification in scientific machine learning
- UQ for physics-informed neural nwtworks
- UQ for DeepONets
NeuralUQ requires the following dependencies to be installed:
- Tensorflow 2.9.1
- TensorFlow Probability 0.17.0
Then install with python
:
$ python setup.py install
For developers, you could clone the folder to your local machine via
$ git clone https://github.com/Crunch-UQ4MI/neuraluq.git