Skip to content

Releases: april-tools/cirkit

cirkit 0.2.0

17 Dec 18:23
Compare
Choose a tag to compare

Release Notes

Documentation changes

#294 #303 #304 #323 Improved overall documentation, both high level (on the readthedocs website) and low level (docstrings)
#328 Added notebook about instantiating and learning a generative circuit classifier for MNIST images, which also showcase variable marginalization for robust classification in presence of missing features

New features

#312 Implemented logic circuits and the parsing of sentential decision diagrams (SDDs) from the PySDD library
#292 Perform batched variable marginalization by specifying a marginalization mask
#312 Added routine to graphically plot symbolic circuits
#309 Simplified overall symbolic representation by having a single sum layer that generalizes the previous dense and mixing layers
#324 Added the CP tensor factorization as circuit construction template

Additional new features

#300 The image data circuit instantiation template now supports Gaussians as input distributions
#325 Added more flexibility in the circuit construction templates by specifying additional hyperparameters arguments to the Parameterization data class
#316 The correctness and consistency of the symbolic representation is now checked before compilation
#313 Added indexed Categorical and embedding implementations, which are generally faster and more memory efficient than the previously one based on one hot encoding followed by an einsum
#330 Added optimization rule replacing kronecker products followed by sum in parameters into einsum

Bug fixes

#311 #319 Fixed NaNs arising from the implementations of Categorical and sum layers when the evaluation is in the log-space
#306 Fixed the region graph to circuit template method as to ensure circuits built with CP layers have a sum as output layer

Library management

#329 Updated requirements, now allowing numpy 2.x versions. Plus, add opt_einsum for possibly faster einsums

Detailed Release Notes (automatically generated)

New Contributors

Full Changelog: 0.1.0...0.2.0

cirkit 0.1.0

28 Oct 10:29
2e0f4cf
Compare
Choose a tag to compare

First release of the cirkit library.

Technical release notes:

  • multi-level APIs to construct circuits: low level - by manipulating the computational graph - and high level - by using region graphs and templates.
  • initial symbolic representation of circuits, parameters and pipelines
  • support for a first minimal set of circuit operators: concatenate, evidence, integrate, multiply, differentiate, conjugate
  • simple PyTorch compilation backend supporting in-pipeline parameter sharing, folding, computational graph optimizations using a rule-matching procedure, and evaluation using semirings
  • PyTorch implementation of bottom-up unconditional sampling and variable marginalization