Features

  • Building custom networks

    • Building SPNs from single operations or blocks (layers)of operations
    • Support for categorical variables and continuous variables [Partial]
    • Realizing joint and conditional distributions
    • Realizing MPNs and SPNs
    • Creating custom operation nodes (e.g. nonlinearities)
    • Adding explicit latent variables
  • Automatic SPN validity checking and scope calculation

  • SPN structure generation

    • Generating dense random SPNs of varying complexity
    • Network pruning
    • Structure learning algorithms [Under development]
    • Hybrid models with convolutional neural networks [Under development]
  • Inference

    • Marginal and MPE inference
    • Inferring values of explicit latent variables (often used for classification)
    • Sampling [Under development]
  • Learning

    • Batch and online learning
    • Expectation-maximization learning
    • Gradient descent learning using TensorFlow optimization [Under development]
    • Weight sharing
  • Saving and loading of trained SPNs

  • SPN network visualization

  • Helper classes and a command-line interface for building standard models for data classification and generation

  • Helper classes for data handling

    • Data loading and saving (data can be larger than the memory) for standard datasets (images and CSV files)
    • Data batching and shuffling
    • Compatibility with the TensorFlow input pipeline
    • Generation of toy datasets
    • Basic data visualizations