Releases: pymc-devs/pytensor
Releases · pymc-devs/pytensor
rel-2.25.1
rel-2.25.0
What's Changed
Major Changes 🛠
- Replace str "output" by a dummy Op in the clients of the FunctionGraph by @ricardoV94 in #790
Bugfixes 🐛
- Increase precision of betainc C implementation by @ricardoV94 in #908
Maintenance 🔧
- Remove unused config options by @Armavica in #806
- Improve string representation of Assert Ops by @Dhruvanshu-Joshi in #891
Full Changelog: rel-2.24.2...rel-2.25.0
rel-2.24.2
What's Changed
New Features 🎉
- Add betainc C implementation by @arthus701 in #798
- Support more cases of advanced indexing in Numba by @ricardoV94 in #818
- Add
nan_to_num
helper by @Dhruvanshu-Joshi in #796 - Implemented Eye Op in PyTorch by @twaclaw in #877
- Add helper to build hessian vector product by @ricardoV94 in #858
- Vectorize
make_vector
by @ricardoV94 in #889
Bugfixes 🐛
- Fix bug in vectorize of random variables with empty size by @ricardoV94 in #886
Documentation 📖
- Run doctest and fix old examples by @ricardoV94 in #865
Maintenance 🔧
- Fix JAX implementation of Argmax by @HangenYuu in #809
- Remove useless SpecifyShape by @ricardoV94 in #885
- Keep stack trace in random_make_inplace by @ricardoV94 in #735
New Contributors
- @arthus701 made their first contribution in #798
- @twaclaw made their first contribution in #877
Full Changelog: rel-2.24.1...rel-2.24.2
rel-2.24.1
✅ Now available on conda-forge after major outage conda-forge/status#181 ✅
What's Changed
New Features 🎉
- Pytorch support for Join and Careduce Ops by @HarshvirSandhu in #869
- Add docs on implementing Pytorch Ops (and CumOp) by @HarshvirSandhu in #837
Bugfixes 🐛
- Fix too restrictive type assert by @ricardoV94 in #880
Full Changelog: rel-2.24.0...rel-2.24.1
rel-2.24.0
What's Changed
Major Changes 🛠
- Add initial support for PyTorch backend by @HarshvirSandhu in #764
- Break MaxandArgmax Op to seperate TensorMax Op and Argmax Op by @Dhruvanshu-Joshi in #731
New Features 🎉
- Implement basic Alloc Ops in PyTorch by @ricardoV94 in #836
- Do not use Numba objmode for supported advanced indexing operations by @ricardoV94 in #805
- Improve static output shapes of Reshape and AdvancedSubtensor1 by @ricardoV94 in #834
- Add more specialized static output shape to Eye by @ricardoV94 in #841
- Update
tensor.where
to allow for case with only condition by @tanish1729 in #844 - Implement JAX dispatch for Argsort and add
stable
argument to sorting functions by @ricardoV94 in #848 - Add rewrite to merge multiple SVD Ops with different settings by @HangenYuu in #769
- Implemented JAX backend for Eigvalsh by @HangenYuu in #867
- PyTorch Softmax Ops by @HAKSOAT in #846
- Rewrite determinant of diagonal matrix as product of diagonal by @tanish1729 in #797
Bugfixes 🐛
- Fix numba implementation of cholesky not setting off-diag entries to zero by @aseyboldt in #816
- Replace RNG update in RV lift rewrites by @ricardoV94 in #870
Maintenance 🔧
- Fix E721: do not compare types, for exact checks use is / is not by @maresb in #596
- Minor: Fix dependencies by @maresb in #813
- Add jax dispatch for
KroneckerProduct
Op
by @jessegrabowski in #822 - Fix typing in subtensor module by @michaelosthege in #823
- Upper pin scipy temporarily by @ricardoV94 in #863
- Remove conservative checks for supported Subtensors operations in JAX by @ricardoV94 in #849
- Check for square matrix in make_node to Det by @tanish1729 in #861
- Add dprint shortcut to FunctionGraph and Function by @ricardoV94 in #779
New Contributors
Full Changelog: rel-2.23.0...rel-2.24.0
rel-2.23.0
What's Changed
Major Changes 🛠
- Add support for random Generators in Numba backend by @ricardoV94 in #69. This PR introduces multiple (long delayed) breaking changes regarding
RandomVariable
s:- Number of default inputs is reduced from 3 (rng, size, dtype) to 2 (rng, size). Other than changes in the signature, any code that relied on positional indexing to split these parameters from the distribution parameters like
dist_params = x.owner.inputs[3:]
must be updated. A helperRandomVariable
methoddist_params
can be used instead likedist_params = x.owner.op.dist_params(x.owner)
- A distinct
RandomVariable
Op
must now be created for each distinctdtype
. Comparisons that don't care about this distinction that used to look likex.owner.op == normal
should be replaced byisinstance(x.owner.op, NormalRV)
- Support for legacy RandomState variables removed. Rng variables must now be of
RandomGenerator
type.randint
, which only worked withRandomState
rngs was removed. Useintegers
instead. size=None
is no longer internally converted tosize=()
.size=()
now behaves differently thansize=None
(just like Numpy)- Definition of
ndims_params
andndim_supp
is deprecated in favor of a numpy-like gufunc signature such as(),(p)->(p)
forMultinomialRV
.ndims_params
andndim_supp
are now derived from the signature, and available only as properties of initializedRandomVariable
Op
s. - Explicit
expand_dims
are now introduced for parameters that are being broadcasted internally by theRandomVariable
Op
, likeElemwise
andBlockwise
do.
- Number of default inputs is reduced from 3 (rng, size, dtype) to 2 (rng, size). Other than changes in the signature, any code that relied on positional indexing to split these parameters from the distribution parameters like
Bugfixes 🐛
- Fix gradient of
OpFromGraph
with disconnected/related outputs by @ricardoV94 in #723 - Fix bug in
slogdet
and expose it inlinalg
module by @theorashid in #807
Maintenance 🔧
- Do not reject PatternNodeRewriter due unrelated multiple clients by @ricardoV94 in #789
- Do not emmit confusing warning from FusionOptimizer by default by @ricardoV94 in #794
- Harmonize Scan rewrite and tag names by @ricardoV94 in #793
- Add types to functions in printing.py by @Armavica in #804
New Contributors
- @theorashid made their first contribution in #807
Full Changelog: rel-2.22.1...rel-2.23.0
rel-2.22.1
What's Changed
Bugfixes 🐛
- Fix numba AdvancedIncSubtensor1 with broadcasted values by @ricardoV94 in #757
- Allow fill_sink rewrite to accomodate changes in broadcastability by @ricardoV94 in #785
Maintenance 🔧
- Make
ifelse
accesible from root by @Dhruvanshu-Joshi in #777
Full Changelog: rel-2.22.0...rel-2.22.1
rel-2.22.0
What's Changed
Major Changes 🛠
- Remove
list_of_nodes
in favour ofapplys_between
by @Dhruvanshu-Joshi in #776
Bugfixes 🐛
- Fix
local_fill_sink
rewrite for multiple output Elemwise Ops by @ricardoV94 in #773
Maintenance 🔧
- Fix Choice and Permutation not respecting the RandomVariable contract by @ricardoV94 in #771
- Inline static size inputs in JAX implementation of RandomVariables by @ricardoV94 in #774
Full Changelog: rel-2.21.0...rel-2.22.0
rel-2.21.0
What's Changed
Major Changes 🛠
- Remove
TopkOp
by @mory91 in #686 - Change behavior of helper
set
/inc
to act on an indexed variable directly by @ricardoV94 in #730
New Features 🎉
- Add
matrix_transpose
and.mT
helpers by @Dhruvanshu-Joshi in #702 - Add rewrite to lift linear algebra through certain linalg ops by @jessegrabowski in #622
- Implement gradient for SVD by @jessegrabowski in #614
- Add helper
explicit_graph_inputs
by @Dhruvanshu-Joshi in #712 - Allow squeezing of specific non-broadcastable axis by @Dhruvanshu-Joshi in #713
- Implement
ufunc_outer
likeadd.outer
for binaryElemwise
operations by @Dhruvanshu-Joshi in #745 - Vectorize some cases of join and advanced subtensor by @ricardoV94 in #744
- Implement numpy-like Rayleigh distribution by @Dhruvanshu-Joshi in #750
Bugfixes 🐛
- Ensure that gcc path is only added once to DLL search path by @maresb in #678
- Only invoke config.cxx if non-empty by @mark-thm in #704
- Fix broadcasting bug in vectorization of RandomVariables by @ricardoV94 in #738
- Fix
scan_checkpoints
with sequences by @ricardoV94 in #754 - Fix implementation of several RandomVariables in JAX backend by @ricardoV94 in #767
Documentation 📖
- Update example in "Adding JAX and Numba support for Ops" by @HangenYuu in #687
- Reconcile environment for development and docs building by @HangenYuu in #717
Maintenance 🔧
- Pin Numpy version to <2 by @maresb in #692
- Use add_dll_directory as a context manager by @maresb in #708
- Add support for negative axis in
specify_broadcastable
by @Dhruvanshu-Joshi in #710 - Add name kwarg to Op.call by @HarshvirSandhu in #693
- Avoid dimshuffle if expand_dims has empty axis by @HangenYuu in #724
- Remove deprecated bin module by @maresb in #726
- Improve variable debugging methods by @ricardoV94 in #729
- Make
local_pow_to_nested_squaring
rewrite more permissive by @ricardoV94 in #742 - Change github link in documentation header by @lucianopaz in #747
- Remove restrictive broadcastability check in
local_blockwise_alloc
by @ricardoV94 in #751 - Support int-like shapes in
pt.full
by @wd60622 in #759 - Enable no-cpython-wrapper in numba where possible by @aseyboldt in #765
New Contributors
- @mory91 made their first contribution in #686
- @HangenYuu made their first contribution in #687
- @Dhruvanshu-Joshi made their first contribution in #702
- @mark-thm made their first contribution in #704
Full Changelog: rel-2.20.0...rel-2.21.0
rel-2.20.0
What's Changed
Major Changes 🛠
- Allow defining an OpFromGraph from constant and shared inputs by @ricardoV94 in #676
- Make Constant and Shared variables subclasses of the respective Variables by @ricardoV94 in #628
- Drop Python 3.9 by @Armavica in #682
New Features 🎉
- Allow more dynamic shape scans to be compiled by @ricardoV94 in #647
Bugfixes 🐛
- Handle implicit broadcasting correctly in RandomVariable vectorization by @ricardoV94 in #664
- Fix bug when broadcasting branches in local_useless_switch rewrite by @ricardoV94 in #681
Maintenance 🔧
- Fix PyPy by eliminating deprecated library detection code by @maresb in #662
- prevent
log10
L_op
from upcasting by @tvwenger in #668 - Suppress caching warning when compiling Numba functions by @ricardoV94 in #674
- Remove numba-scipy dependency by @ricardoV94 in #675
- Rewriting the kron function using JAX implementation by @tanish1729 in #684
New Contributors
- @tanish1729 made their first contribution in #684
Full Changelog: rel-2.19.0...rel-2.20.0