Releases: ComputationalPsychiatry/pyhgf
v0.2.10
What's Changed
- fix documentation by @LegrandNico in #361
- fix unbounded updates for continuous and volatile nodes in Rust, JAX and vectorised JAX by @LegrandNico in #362
- Bump version from 0.2.9 to 0.2.10 by @LegrandNico in #363
Full Changelog: v0.2.9...v0.2.10
v0.2.9
This release introduces a full Rust backend that is on par with the JAX version on most features, a new vectorised JAX backend to improve support for deep neural networks, and extensive support for deep learning classification tasks in deep networks.
What's Changed
- dissociate fixed and dynamic learning rates for learning in deep networks by @LegrandNico in #320
- check for inf values in the learning updates by @LegrandNico in #321
- Iowa-Gambling Task use-case by @sashapustota in #319
- Add a DeepNetwork class and move the relevant methods by @sashapustota in #318
- add volatile nodes and set them as defaults for hidden layers by @sashapustota in #324
- use prospective configuration in the weight updates by @LegrandNico in #326
- Clip expected mean in binary input for numerical stability by @LegrandNico in #327
- Use a numerically stable version of the uHGF by @LegrandNico in #328
- add Rust backend for continuous nodes by @LegrandNico in #330
- test volatile nodes, fix volatile nodes updates and update learning function by @LegrandNico in #331
- add update_type parameter when using volatile nodes by @LegrandNico in #332
- add volatile node with three possible update types to the Rust backend by @LegrandNico in #333
- fix immutable JAX arrays in plot_nodes by @LegrandNico in #335
- add chaining patterns to Network() in Rust by @LegrandNico in #336
- add add_layers and add_stack_layers to match the JAX version by @LegrandNico in #337
- add a collection of coupling function in Rust and allow the use of coupling_fn in add_nodes by @LegrandNico in #338
- add a learning and fit method to the Rust package by @LegrandNico in #339
- add_nodes can receive additional parameters by @LegrandNico in #340
- add a predict method to the Network class by @LegrandNico in #341
- add support for binary state nodes in Rust by @LegrandNico in #342
- record trajectories is optional when using fit in the Rust backend by @LegrandNico in #343
- add weights initialisation (JAX and Rust) by @LegrandNico in #344
- new learning dynamic for deep networks by @LegrandNico in #345
- various fixes on networks structures and updates dynamics by @LegrandNico in #346
- add constant states and a new weight update function by @LegrandNico in #347
- merge the two learning methods into one parametrisable function by @LegrandNico in #349
- Replace HashMap with flat Structs in the Rust backend by @LegrandNico in #350
- Performance and API improvements in the Rust backend by @LegrandNico in #351
- update the notebook supporting the method paper by @LegrandNico in #352
- add adam optimizer when training with the Rust backend by @LegrandNico in #353
- refactor and simplify the updates for volatile state nodes by @LegrandNico in #354
- Vectorized deep network class by @sashapustota in #348
- use Adam in vectorised deep networks and make it default by @LegrandNico in #355
- add a record_trajectories parameter to the JAX backend by @LegrandNico in #356
- VectorisedDeepNetwork is now replacing DeepNetwork + use three different posterior updates for the volatility parent by @LegrandNico in #357
- change license from GNU to MIT by @LegrandNico in #358
- improve readme, API documentation and the deep learning tutorial by @LegrandNico in #359
- Bump version from 0.2.8 to 0.2.9 by @LegrandNico in #360
New Contributors
- @sashapustota made their first contribution in #319
Full Changelog: v0.2.8...v0.2.9
v0.2.8
What's Changed
- use Python built in types instead of the typing module by @LegrandNico in #307
- use uv for dependencies management by @LegrandNico in #308
- fix JAX version on Colab by @LegrandNico in #310
- Add first components and documentation for deep predictive coding networks by @LegrandNico in #312
- Use better parameters for the update depth example by @LegrandNico in #313
- image link by @LegrandNico in #314
- v0.2.8 by @LegrandNico in #315
Full Changelog: v0.2.7...v0.2.8
v0.2.7
What's Changed
- add unbounded posterior updates for volatility parents by @LegrandNico in #262
- support python 3.13 by @LegrandNico in #299
- v0.2.7 by @LegrandNico in #300
Full Changelog: v0.2.6...v0.2.7
v0.2.6
What's Changed
- add graphviz as dependency by @LegrandNico in #293
- update docs on binary node by @LegrandNico in #294
- use jax.nn.sigmoid by default by @LegrandNico in #295
- hide unobserved values when using plot_node() by @LegrandNico in #296
- create wheels for multiple Python version and OS support by @LegrandNico in #297
- update cargo configuration and CI file by @LegrandNico in #298
Full Changelog: v0.2.5...v0.2.6
v0.2.5
What's Changed
- Add observation types to belief_propagation by @SylvainEstebe in #274
- add an action component to the belief propagation step by @LegrandNico in #287
- fix links and proofs rendering in the documentation by @LegrandNico in #288
- add generative sampling functionalities to the Network class by @SylvainEstebe in #290
- use ruff for linting by @LegrandNico in #291
- update maturin and pyo3 by @LegrandNico in #292
Full Changelog: v0.2.4...v0.2.5
v0.2.4
What's Changed
This release fixes an important bug from the add_nodes function that could create networks with inconsistent edges/attributes regarding value and volatility parents:
- fix the insert_nodes function for multiple parents/children by @LegrandNico in #279
The rest are maintenance issues related to publishing mixed Python/Ruste packages:
- v0.2.4 by @LegrandNico in #280
- use upload/download-artifact@v4 by @LegrandNico in #281
- fix pypi action by @LegrandNico in #282
- set rshgf as a sub-module by @LegrandNico in #283
- adapt the github action to the Rust submodule by @LegrandNico in #284
- use modern pyproject.toml structure to avoid conflicts with Maturin by @LegrandNico in #285
Full Changelog: v0.2.3...v0.2.4
v0.2.3
What's Changed
- update Github action for code coverage by @LegrandNico in #272
- add more tests and improve code coverage by @LegrandNico in #273
- set package version in pyproject.toml by @LegrandNico in #276
- use pytest-benchmark in CI by @LegrandNico in #277
- add a plot_network method using NetworkX as backende by @LouieMH in #275
- Add update function and tutorial on causal prediction errors by @LinaWalk13 in #249
- v0.2.3 by @LegrandNico in #278
New Contributors
- @LinaWalk13 made their first contribution in #249
Full Changelog: v0.2.2...v0.2.3
v0.2.2
What's Changed
- Update README.md by @LegrandNico in #265
- add remove_node function by @LouieMH in #267
- Add add_parent function by @LouieMH in #268
- input nodes can receive arrays of observations by @LegrandNico in #270
- Add support for generalised Bayesian filtering with dynamic learning rate in JAX by @LegrandNico in #266
- v0.2.2 by @LegrandNico in #271
New Contributors
Full Changelog: v0.2.1...v0.2.2
v0.2.1
What's Changed
- use poetry for packaging by @LegrandNico in #246
- add citation guidelines by @LegrandNico in #248
- Add a Rust implementation for 1d Gaussian exponential family state nodes by @LegrandNico in #229
- Use Hashmaps, vector preallocation and avoid cloning [Rust] by @LegrandNico in #250
- refactor the add nodes methods by @LegrandNico in #251
- update links to the new tapas repository by @LegrandNico in #253
- fix maturin version in CI by @LegrandNico in #254
- refactoring utils module by @SylvainEstebe in #256
- update pyo3 to 0.23.3 by @LegrandNico in #258
- fix pre-commit paths and Rust CI by @LegrandNico in #260
- refactor continuous posterior updates module by @LegrandNico in #261
- Split posterior precision update into two branches by @LegrandNico in #263
- v0.2.1 by @LegrandNico in #264
New Contributors
- @SylvainEstebe made their first contribution in #256
Full Changelog: v0.2.0...v0.2.1