SPFlow: An Easy and Extensible Library for Deep Probabilistic Learning using Sum-Product Networks
This library addresses the need for an easy-to-use and extensible tool for researchers and practitioners working with SPNs in probabilistic machine learning, though it is incremental as it builds on existing SPN methods.
The authors introduced SPFlow, an open-source Python library for deep probabilistic learning using Sum-Product Networks (SPNs), which provides a simple interface for inference, learning, and manipulation, including features like efficient probabilistic inference routines, support for various learning algorithms, and extensibility through custom code and compilation into TensorFlow, C, CUDA, or FPGA for faster computations.
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.