v1.0.0
This release marks a major milestone in the pomegranate saga.
- The Cython backend has been replaced with a PyTorch backend. Goodbye weird installation issues and segfaults.
- The API has been changed in a way that is not back-compatible, hence an increment in the major version. These changes fix issues that have hampered development, made the user experience more difficult, or were just bad.
Here is an incomplete summary of the changes. Please see the CHANGELOG for a complete description.
General
- The entire codebase has been rewritten from the ground up to use PyTorch in the backend
- This codebase is guarded by a comprehensive suite of >800 unit tests, calling assert statements several thousand times.
Features
- GPU support has been added for all models and methods
- Mixed/half precision has been added for all models and methods (though the benefits seem mild to none...)
- Serialization is now handled by PyTorch, yielding more compact and efficient I/O
- Missing values are now supported through
torch.masked.MaskedTensor
objects - Prior probabilities are now supported for all relevant models and methods and enable more comprehensive/flexible semi-supervised learning than before
Models
- All distributions are now multivariate by default, supporting speedups through batched operations
- Factor graphs are now supported as first-class citizens
- Hidden Markov models have been split into
DenseHMM
andSparseHMM
models which differ in how the transition matrix is encoded, withDenseHMM
objects being significantly faster - NaiveBayes models have been removed
- MarkovNetworks models have been temporarily removed
- Constraint graphs have been temporarily removed
Hope this is useful to y'all! I know that it is a big change but I think that these changes will pay off. Please reach out with feedback or questions.