Skip to main content

LibSPN

LibSPN is a library for learning and inference with Sum-Product Networks. LibSPN is integrated with TensorFlow.

What are SPNs?

Sum-Product Networks (SPNs) are a probabilistic deep architecture with solid theoretical foundations, which demonstrated state-of-the-art performance in several domains. Yet, surprisingly, there are no mature, general-purpose SPN implementations that would serve as a platform for the community of machine learning researchers centered around SPNs. LibSPN is a new general-purpose Python library, which aims to become such a platform. The library is designed to make it straightforward and effortless to apply various SPN architectures to large-scale datasets and problems. The library achieves scalability and efficiency, thanks to a tight coupling with TensorFlow, a framework already used by a large community of researchers and developers in multiple domains.

Why LibSPN?

Several reasons:

  • LibSPN is a general-purpose library with a generic interface and tools for generating SPN structure, making it easy to apply SPNs to any domain/problem
  • LibSPN offers a simple Python interface for building or generating networks, learning, and inference, facilitating prototyping (e.g. in Jupyter) and enabling simple integration of SPNs with other software
  • LibSPN is integrated with TensorFlow, making it possible to combine SPNs with other deep learning methods
  • LibSPN uses concepts that should sound familiar to TensorFlow users (e.g. tensors, variables, feeding, queues, batching, TensorBoard etc.)
  • LibSPN leverages the power of TensorFlow to efficiently perform parallel computations on (multiple) GPU devices
  • LibSPN is extendable, making it easy to add custom operations and graph nodes

Installation

Prerequisites

LibSPN requires installing tensorflow and tensorflow-probability first. The table below shows which version of each you'd need if you want to be specific:

tensorflow tensorflow-probability
1.14 0.7.0
1.13 0.6.0
1.12 0.5.0
1.11 0.4.0

First, install tensorflow or tensorflow-gpu:

pip install tensorflow-gpu

Then, install tensorflow-probability:

pip install tensorflow-probability

LibSPN

LibSPN is also available on pypi:

pip install libspn

Features of LibSPN

  • Simple interface for manual creation of custom network architectures

    • Automatic SPN validity checking and scope calculation
    • Adding explicit latent variables to sums/mixtures
    • Weight sharing
  • Integration with TensorFlow

    • SPN graph is converted to TensorFlow graph realizing specific algorithms/computations
    • Inputs to the network come from TensorFlow feeds or any TensorFlow tensors
  • SPN structure generation and learning

    • Dense random SPN generator
    • Simple naive Bayes mixture model generator
  • Loading and saving of structure and weights of learned models

  • Simple interface for random data generation, data loading and batching

    • Random data sampling from Gaussian Mixtures
    • Using TensorFlow queues for data loading, shuffling and batching
  • Built-in visualizations

    • SPN graph structure visualization
    • Data/distribution visualizations
  • SPN Inference

    • SPN/MPN value calculation
    • Gradient calculation
    • Inferring MPE state

Papers using LibSPN

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

libspn-0.1.3.tar.gz (12.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

libspn-0.1.3-py3-none-any.whl (167.5 kB view details)

Uploaded Python 3

File details

Details for the file libspn-0.1.3.tar.gz.

File metadata

  • Download URL: libspn-0.1.3.tar.gz
  • Upload date:
  • Size: 12.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.18.4 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.5.2

File hashes

Hashes for libspn-0.1.3.tar.gz
Algorithm Hash digest
SHA256 5b75ac59cfbbcf88e577a06d15e70187a24378a2997729b695824550c392d71e
MD5 5bd69220a250da4b26a52056a218450c
BLAKE2b-256 7a75b1e03d3147c6950221d2e8884d0c5d7684c154a0e1b48bd79997d893861e

See more details on using hashes here.

File details

Details for the file libspn-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: libspn-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 167.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.18.4 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.5.2

File hashes

Hashes for libspn-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9b769e1a709907dffebe77fd6b9d49fad4d11dbf48b475b778763cbb56eda0fe
MD5 ac1b6af70d4876088adb0c7aa1596559
BLAKE2b-256 332264bd75c4144149b3bd9ab5328b5406952016095bb08f042633f77919fc6d

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 files

0.1.2

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page