-
v1.1.0
Version 1.1.0 Changes from 1.0.0: (taken from the changelog file, as we now have one!) ADDED - Added support for Generalized Information Bottleneck (GIB; introduced by [Strouse and Schwab 2016](https://arxiv.org/abs/1604.00268)). This includes the "vanilla" IB and the Deterministic IB as special cases. - Improved performance by vectorizing some key sections of the code. - Added support for computing IB/DIB/GIB directly from a table giving a joint probability distribution p(x,y) rather than empirical data. - Added detailed example notebook for the Deterministic Information Bottleneck (`examples/Deterministic-Bottleneck.ipynb`). This reproduces a key figure from the DIB paper and showcases how easy it now is to turn a knob and go from IB to DIB via various flavours of GIB. - Added example notebook (`examples/Compare-embo-dit.ipynb`) with a comparison vs [dit](https://doi.org/10.21105/joss.00738), another information theory package that also implements the IB. Here we show that the two packages give matching results on a few sample problems (except when dit crashes), and we compare embo and dit speed-wise. Embo is much faster. - Added tests for GIB (actually just took most previous tests and made them to run over a range of IB types, from basic IB to DIB passing by some intermediate ones) - Added tests to check that our internal implementation of KL divergence and entropy give exactly the same results as the corresponding functions from SciPy (they should, as we use the same low-level functions from `scipy.special`). - Added tests on randomly-generated empirical data, sampled from a fixed probability distribution. This is better than what we had before because it makes it easier to catch corner cases. - Added tests on randomly-generated probability distributions of various shapes and sizes. This is motivated along the same lines as the previous point; only it's the whole distribution that is random here, not (just) the data. - Always run all tests with multiple versions of NumPy (1.18,1.19,1.20). - Add license notices to files containing the core code. - Added changelog file. CHANGED - Renamed `EmpiricalBottleneck` class to `InformationBottleneck`, and `get_empirical_bottleneck` method to `get_bottleneck`. - Made a small fix to the convergence criterion of the algorithm. This is nicer from a motivation standpoint (we monitor the loss function instead of the candidate pmf for changes), and also matches what is done in other papers such as Strouse. - Changed initialization rule for the bottleneck "encoder" (p(m|x)), using a recipe inspired by what was done in the DIB paper. This was done mostly to aid in the comparison with the figure from that paper in the example notebooks, but it seems like a nice thing to have in general so I've switched to that by default. The previous initialization method is still used when the dimensionality of M is lower than that of X. - Improved handling of corrupted input (NaNs, Infs, empty arrays) - Switched to [tox](https://tox.readthedocs.io/en/latest/index.html) for managing unit tests, as using pure setuptools via `python setup.py test` is now discouraged. - Removed usage of dtypes such as `np.int`, which were generating numpy deprecation warnings in NumPy 1.20. - Removed some somewhat misleading/unnecessary references to past/future bottleneck in the docstrings and comments, where more general notions of IB were involved.
-
v1.0.527f772eb · Version bump ·
Version 1.0.5 Add handling of NaNs and Infs in input data; improve documentation and testing.
-
v1.0.4
Version 1.0.4 Add build system configuration file.
-
v1.0.3
Version 1.0.3 Performance improvements, and dropped Scipy dependence.
-
v1.0.2
Version 1.0.2 Enable setting size of bottlneck variable to minim size of X or Y
-
v1.0.066f96667 · Version bump ·
Version 1.0.0 Switch main interface to be object oriented (based on EmpiricalBottleneck class). Flip the direction in which time windows are taken on the X array, as a more useful convention when doing past-future bottleneck. Enable window size control when doing past-future bottleneck. Add noisy logic gate Markov chain example to notebooks, highlighting the use of time windowing. General improvements to documentation and examples.
-
v0.4.0dad178f3 · Version bump ·
Version 0.4.0 Breaking change: do not return marginal entropies by default (you now need to set an option for that). Fixed a bug that caused the last datapoint in X and Y to be discarded. Doc fixes.
-
v0.3.2
Vesion 0.3.2 Added more examples using data generated from Markov chains. Improved documentation.
-
v0.3.118146596 · Version bump ·
Version 0.3.1 Minor bugfix release to make sure version and license file are always distributed with the code.
-
v0.3.0
Version 0.3.0 This is the first version to get a public release on PyPI. Basic functionality and interface is in place, though more work is needed on documentation and code style.