Copyright (c) 2021 Nico Piatkowski
pxpy
The python library for discrete pairwise undirected graphical models.
Runs on Linux with GLIBC >= 2.28 and Windows 10. Exported ONNX models
run on any architecture that has an ONNX runtime with opset 13.
Inference
- Loopy belief propagation
- Junction tree
- Stochastic Clenshaw-Curtis quadrature
Sampling
- Gibbs Sampling
- Perturb+Map Sampling
Parameter learning
- Accelerated proximal gradient
- built-in L1 / L2 regularization
- Support for custom regularization
Structure learning
- Chow-Liu trees
- Soft-thresolding
- High-order clique structures
Misc
- Support for deep Boltzmann tree models (DBT)
- Support for spatio-temporal compressible reparametrization (STRF)
- Runs on x86_64 (linux, windows) and aarch64 (linux)
- Graph drawing via graphviz
- Discretization
https://randomfields.org
Alpha Changelog
- 1.0a71: Improved: ONNX and QUBO export
- 1.0a70: Added: QUBO export
- 1.0a69: Added: ONNX PAM export
- 1.0a68: Improved: Data type selection, ONNX export
- 1.0a67: Improved: Integer MRF; ONNX export
- 1.0a66: Improved: Data type selection, various minor fixes. Added: Integer model file io.
- 1.0a65: Improved: Manual model construction
- 1.0a64: Improved: GPU code. Added: ONNX export
- 1.0a63: Added: Experimental annealed rejection sampler for structure sampling
- 1.0a62: Improved: Model loading
- 1.0a61: Improved: Setting target for "star" structure; reduced python version to 3.6
- 1.0a60: Improved: Numerical stability of discretization
- 1.0a55: Added: Load/store of discretization models; aarch64 support (tested on Jetson TX1)
- 1.0a54: Improved: Init speed
- 1.0a53: Improved: Init speed
- 1.0a52: Improved: Graph splitting; init speed
- 1.0a51: Fixed: Multi-core normalization; Split-edge weight centering
- 1.0a50: Improved: Support for external inference engines; Changed required GLIBC version to 2.29
- 1.0a49: Fixed: External loader
- 1.0a48: Added: Shell script "pxpy_environ" for populating various environment variables. Improved: multi-core support.
- 1.0a47: Added: draw_neighbors(..). Improved: Discretization
- 1.0a44: Improved: Discretization
- 1.0a42: Improved: Updated some default values
- 1.0a41: Improved: Fixed subtle bug in parameter initialization
- 1.0a40: Added: Loading string data via genfromstrcsv(..) (built-in string<->int mapper)
- 1.0a36: Improved: Randomized clique search
- 1.0a29: Added: Randomized clique search
- 1.0a28: Improved: Handling NaN-values during discretization (now interpreted as missing)
- 1.0a27: Improved: Accelerated structure estimation
- 1.0a26: Improved: Progress computation. Added: Online entropy computation for large cliques
- 1.0a25: Improved: Memory management
- 1.0a24: Improved: Structure estimation, backend. Added: Third-order structure estimation; simple graphviz output
- 1.0a23: Improved: Structure estimation
- 1.0a22: Improved: Discretization engine, support for external inference engine. Added: default to 32bit computation (disable via env PX_USE64BIT)
- 1.0a21: Improved: Support for external inference engine
- 1.0a20: Added: Support for external inference engine (access via env PX_EXTINF)
- 1.0a19: Improved: Manual model creation
- 1.0a18: Added: Debug mode (linux only, enable via env PX_DEBUGMODE)
- 1.0a17: Improved: API, tests, regularization. Added: AIC and BIC computation
- 1.0a16: Improved: Memory management, access to optimizer state in optimization hooks. Added: Support for training resumption
- 1.0a15: Improved: API
- 1.0a14: Improved: Memory management
- 1.0a13: Improved: Memory management (fixed leak in conditional sampling/marginals)
- 1.0a12: Improved: Access to vertex and pairwise marginals
- 1.0a11: Added: Access to single variable marginals
- 1.0a10: Improved: Library build process
- 1.0a9: Added: Conditional sampling
- 1.0a8: Imroved: Maximum-a-posteriori (MAP) estimation. Added: Custom graph construction
- 1.0a7: Added: Conditional marginal inference, support for Ising/minimal statistics
- 1.0a6: Added: Manual model creation, support for training data with missing values (represented by pxpy.MISSING_VALUE)
- 1.0a5: Improved: Model management
- 1.0a4: Added: Model access in regularization and proximal hooks
- 1.0a3: Improved: GLIBC requirement, removed libgomp dependency
- 1.0a2: Added: Python 3.5 compatibility
- 1.0a1: Initial release