SPFlow: An Easy and Extensible Library for Deep Probabilistic Learning
  using Sum-Product Networks
  We introduce SPFlow, an open-source Python library providing a simple
interface to inference, learning and manipulation routines for deep and
tractable probabilistic models called Sum-Product Networks (SPNs). The library
allows one to quickly create SPNs both from data and through a domain specific
language (DSL). It efficiently implements several probabilistic inference
routines like computing marginals, conditionals and (approximate) most probable
explanations (MPEs) along with sampling as well as utilities for serializing,
plotting and structure statistics on an SPN. Moreover, many of the algorithms
proposed in the literature to learn the structure and parameters of SPNs are
readily available in SPFlow. Furthermore, SPFlow is extremely extensible and
customizable, allowing users to promptly distill new inference and learning
routines by injecting custom code into a lightweight functional-oriented API
framework. This is achieved in SPFlow by keeping an internal Python
representation of the graph structure that also enables practical compilation
of an SPN into a TensorFlow graph, C, CUDA or FPGA custom code, significantly
speeding-up computations.
