Skip to main content

Infer.NET development

Comparison to other PP frameworks

UNDER CONSTRUCTION

  Infer.NET Stan Edward PyMC3 Pyro
Inference EP, VMP, Gibbs NUTS, HMC, ADVI      
Language C#, F#, Csoft1 Stan (Mix of C++ and R) Interfaces with Python and others Python    
License MIT BSD (parts use GPL v3) Apache v2    
Online inference latency Tiny        
Scalability          
Discrete random variables Yes No Algorithm dependent    
Continuous random variables Yes Yes Yes    
String random variables Yes No No    
Stochastic gates (if / switch) Yes No No    
Mixture models Yes Awkward Yes    
Repeat blocks / raising model to power Yes No No    
Arrays of arrays (jagged arrays) Yes No No    
Increment log density Yes Yes Yes    
Turing complete No No3 Yes?    
Model evidence computation Yes No No    
Non-parametric models GP only No No    
  1. Support for Csoft (Probabilistic C#) is still experimental.
  2. Has an extensibility mechanism for adding new user-defined factors, message operators, distributions and constraints.
  3. “Turing complete” here means any computable random variable can be expressed in the modelling language. Stan is “Turing complete” in the sense that the user can specify any computable posterior density. Converting a computation that generates a random variable into a computation for the posterior density is a non-trivial task (and arguably the job of a probabilistic programming language). See On the computability of conditional probability.

For a comparison to Bayesian network software, see https://www.cs.ubc.ca/~murphyk/Software/bnsoft.html.