Releases: pymc-devs/pytensor
Releases · pymc-devs/pytensor
rel-3.0.3
What's Changed
New Features 🎉
- More rewrites for ExtractDiag by @jessegrabowski in #2045
- System for algebraic reasoning about linear alegbra by @jessegrabowski in #2032
- Add numba dispatch for expm by @jessegrabowski in #2148
Bugfixes 🐛
- Fix local_sqrt_sqr rewrite logic bug by @WHOIM1205 in #1952
- Do not duplicate outer inputs when inlining OFG by @ricardoV94 in #2147
- Fix fusion replacement ordering by @ricardoV94 in #2150
Maintenance 🔧
- Support single string dims in XTensorType by @williambdean in #2129
- Add @ (matmul) operator to XTensorVariable by @williambdean in #2128
- Make exceptions less verbose by default by @ricardoV94 in #1330
- Numba CAReduce: reorder loops based on strides by @ricardoV94 in #1961
- Stop subtensor merge bonanza by @ricardoV94 in #2098
- as_tensor_variable dispatch for range objects by @williambdean in #2141
- Normalize string dims across all xtensor paths by @williambdean in #2146
- Extend inv(A) @ b -> solve(A, b) to batched matmul by @ricardoV94 in #2157
- Add numba dispatch for SVD by @jessegrabowski in #2136
Full Changelog: rel-3.0.2...rel-3.0.3
rel-3.0.2
What's Changed
Bugfixes 🐛
- Fix Softmax handling of non-tensor inputs regression by @ricardoV94 in #2122
Full Changelog: rel-3.0.1...rel-3.0.2
rel-3.0.1
What's Changed
New Features 🎉
- Optimize solve of block_diag by @jessegrabowski in #2109
- Add custom jax jvp for solve_sylvester by @jessegrabowski in #2116
Maintenance 🔧
- Replace several Ops by OpFromGraph by @ricardoV94 in #2110
- Rewrite solve(matrix_inverse(X), b) → X @ b by @alessandrogentili001 in #2114
- Fix numba support of cython functions with ssize by @ricardoV94 in #2113
- Lazy scipy import by @ricardoV94 in #2112
Full Changelog: rel-3.0.0...rel-3.0.1
rel-3.0.0
What's Changed
Major Changes 🛠
- Make Numba the default linker by @ricardoV94 in #1862
- Remove test_value functionality by @ricardoV94 in #1972
- Reorganize compile module and remove deprecated functionality by @ricardoV94 in #1351
- Change user-facing random variable API by @ricardoV94 in #1707
- Cleanup root objects by @ricardoV94 in #1863
- Rename autodiff L_op and R_op methods to pull_back and push_forward by @ricardoV94 in #1983
- Reorganize linear algebra by @jessegrabowski in #2037
- XTensor module no longer experimental by @ricardoV94 in #2048
- Refactor advanced subtensor by @jaanerik in #1756
New Features 🎉
- Implement isfinite helper by @nirdesho6o in #1957
- Implement
richdebugprint format viafile="rich"by @williambdean in #2042 - Add xtensor.where as a method and root operation by @ricardoV94 in #1985
Bugfixes 🐛
- Make numba caching safe across internal name collisions by @ricardoV94 in #2051
- Python Scalar Pow: do not return complex values for fractional powers of negative floats by @vybhav72954 in #1945
- Fix scan_save_mem with 0 steps by @ricardoV94 in #1977
- Fix Scan higher order derivatives by @ricardoV94 in #1975
- Scan: Fix untraced_sit_sot when n_steps=0 by @ricardoV94 in #2001
- Fix issues with RNGs in Scan by @ricardoV94 in #2039
- Add empty input guards to numba linalg by @jessegrabowski in #2057
- Make input
output_gradsto OFG pullback function consistent at runtime by @jessegrabowski in #2065 - Fix error in local_reshape_to_dimshuffle by @ricardoV94 in #2107
- Improve Feature hook API and pickle round-trip by @jessegrabowski in #2099
Documentation 📖
- make scan dosctring render legibly by @elc45 in #1897
- Add examples to function and Function.copy docstrings by @alessandrogentili001 in #2046
- docs(tutorial): change stale alias at -> pt by @williambdean in #2068
Maintenance 🔧
- Einsum: Compatibility with newer numpy by @ricardoV94 in #1916
- Graph replace: Handle redundant replacements by @ricardoV94 in #1942
- Allow freezing of FunctionGraph for hashing by @jessegrabowski in #1908
- Validate that output_subset indices are within bounds in CVM by @WHOIM1205 in #1903
- Rewrites for consecutive advanced read-write operations by @ricardoV94 in #2061
- Better static shape inference in linalg.kron by @ayulockedin in #1898
- Remove complex objectmode in linalg Ops by @jessegrabowski in #2062
- Add pullback for chosolve by @jessegrabowski in #2066
- Update Eigh and Eigvalsh Ops by @jessegrabowski in #2059
- Do not include constant branches in minimization arguments by @ricardoV94 in #1959
- Inline constants and merge duplicate inputs in OptimizeOp by @ricardoV94 in #1934
- Remove Iv core Op in favor of Ive and add rewrite rule for log of it by @alessandrogentili001 in #1929
- Rewrite a / exp(b) -> a * exp(-b) by @jessegrabowski in #1965
- Scan: remove unused outputs by @ricardoV94 in #2067
- Scan: Inplace on untraced_sit_sot (like RNGs) by @ricardoV94 in #2003
- Convert unit buffer sit sot to untraced sit sot by @ricardoV94 in #2005
- Canonicalize JoinDims and SplitDims to simpler operations than reshape by @mengxingbw in #1847
- XTensorType: Add
values_eqandvalues_eq_approxby @ricardoV94 in #1914 - Allow complex inputs to numba linalg functions by @jessegrabowski in #1974
- Numba: Add several remaining sparse ops by @tomicapretto in #1896
- Add MLX dispatch for OpFromGraph by @jessegrabowski in #2012
- Add MLX dispatch for IfElse by @jessegrabowski in #2013
- MLX Elementwise and scalar dispatches by @jessegrabowski in #2007
- Add MLX dispatch for BatchedDot by @jessegrabowski in #2009
- Add einsum dispatch for mlx by @jessegrabowski in #2017
- Add MLX dispatch for Pad by @jessegrabowski in #2019
- More MLX linalg by @jessegrabowski in #2011
- Facilitate graph pattern matching by @ricardoV94 in #1786
- Add ScalarOp mathematical props by @jessegrabowski in #2053
- Remove errant dprint in local_lift_transpose_through_dot by @jessegrabowski in #2036
New Contributors
- @jaanerik made their first contribution in #1756
- @elc45 made their first contribution in #1897
- @alessandrogentili001 made their first contribution in #1929
- @nirdesho6o made their first contribution in #1957
- @vybhav72954 made their first contribution in #1945
- @mengxingbw made their first contribution in #1847
- @github-actions[bot] made their first contribution in #2076
Full Changelog: rel-2.38.0...rel-3.0.0
rel-2.38.3
What's Changed
Bugfixes 🐛
- Fix optimize gradient bug with repeated inputs by @ricardoV94 in #1933
- Fix scalar optimize gradient bug with repeated inputs by @ricardoV94 in #1958
- Fix numba compilation crashes from functions cached in fork processes by @ricardoV94 in #1992
- Fix numba caching in multiprocess contexts by @ricardoV94 in #2079
Maintenance 🔧
- Handle vectorization of Alloc nodes by @ricardoV94 in #1943
Full Changelog: rel-2.38.2...rel-2.38.3
rel-2.38.2
What's Changed
Maintenance 🔧
- Improve static shape of shaped xtensor Ops by @ricardoV94 in #1937
Full Changelog: rel-2.38.1...rel-2.38.2
rel-2.38.1
What's Changed
Bugfixes 🐛
- Validate that output_subset indices are within bounds in CVM by @WHOIM1205 in #1903
Documentation 📖
Maintenance 🔧
- Fix static shape inference in pt.linalg.kron and add regression test by @ayulockedin in #1898
- Implement vectorize for xtensor Dot by @ricardoV94 in #1915
- XTensorType: Add
values_eqandvalues_eq_approxby @ricardoV94 in #1914 - Einsum: Compatibility with newer numpy by @ricardoV94 in #1916
- Numba: Add several remaining sparse ops by @tomicapretto in #1896
New Contributors
- @jaanerik made their first contribution in #1756
- @ayulockedin made their first contribution in #1898
- @elc45 made their first contribution in #1897
Full Changelog: rel-2.38.0...rel-2.38.1
rel-2.38.0
What's Changed
New Features 🎉
- Add
QZOp and support for Numbasolve_discrete_areby @jessegrabowski in #1859 - Implement xtensor.signal.convolve1d by @ricardoV94 in #1868
- Implement
StructuredDotGradCSRandStructuredDotGradCSCin numba backend by @tomicapretto in #1860 - Implement sparse HStack and VStack in numba backend by @tomicapretto in #1889
- Implement shared XTensorVariables by @ricardoV94 in #1882
- Implement vectorize_graph for XTensor Ops by @ricardoV94 in #1876
Bugfixes 🐛
- Abort local_block_diag_dot_to_dot_block_diag when n_inputs < 2 by @jessegrabowski in #1865
- Fix xtensor broadcast dtypes by @ricardoV94 in #1877
- Fix xtensor discrete reduction by @ricardoV94 in #1879
- Fix empty xtensor indexing by @ricardoV94 in #1880
- Respect late introduction of ShapeFeature by @ricardoV94 in #1881
- Fix incorrect static output shape in MatrixPinv for non-square inputs by @WHOIM1205 in #1885
Maintenance 🔧
- Numba sparse: optimize csc @ csc by @ricardoV94 in #1866
- Numba sparse dot: reduce number of conversions for non-csr inputs by @tomicapretto in #1873
- Stabilize logdiffexp_to_log1mexpdiff -inf, -inf case by @ricardoV94 in #1883
- Allow
infer_shapeto work with xtensor lowering by @ricardoV94 in #1891
New Contributors
- @WHOIM1205 made their first contribution in #1885
- @arpanjha234 made their first contribution in #1890
Full Changelog: rel-2.37.0...rel-2.38.0
rel-2.37.0
What's Changed
Major Changes 🛠
- Do not raise in linalg Ops by @ricardoV94 in #1834
New Features 🎉
- Add rewrite to fuse nested BlockDiag Ops by @eby0303 in #1671
- Fix gradient of
minimizeandrootwrt higher-dimensional arguments by @jessegrabowski in #1806 - Determinant of factorized matrices by @ricardoV94 in #1785
- Improved Linear Control Ops, with Numba Dispatches by @jessegrabowski in #1840
- Basic Sparse functionality in Numba by @ricardoV94 in #1676
- Implement sparse dot product in numba backend by @tomicapretto in #1854
Bugfixes 🐛
- Do not coerce gradients to TensorVariable by @ricardoV94 in #1685
- Fix bug in local_block_diag_dot_to_dot_block_diag by @ricardoV94 in #1839
- Fix issues with split and split_dims by @ricardoV94 in #1828
- Tweaks to reshape Ops by @ricardoV94 in #1842
- Fix scalar Blockwise in numba backend by @ricardoV94 in #1846
Maintenance 🔧
- local_[div|mul]_switch_sink: Allow zero inside a DimShuffle/Alloc by @ricardoV94 in #1850
New Contributors
- @eby0303 made their first contribution in #1671
- @tomicapretto made their first contribution in #1854
Full Changelog: rel-2.36.3...rel-2.37.0
rel-2.36.3
What's Changed
Major Changes 🛠
- Remove deprecated AbstractConv Ops and tests by @jessegrabowski in #1817
New Features 🎉
- Implement
L_Opforjoin_dimsandsplit_dimsby @jessegrabowski in #1812
Bugfixes 🐛
- Fix local_subtensor_of_squeeze when squeezing multiple dimensions by @jessegrabowski in #1819
- Fix unboxing of numpy boolean scalars in C-backend by @ricardoV94 in #1790
- Exclude
numbarewrites from JAX Scan rewrites by @ricardoV94 in #1825 - JAX Scan: Fix bug when recurring trace matches final requested size by @ricardoV94 in #1826
- Fix BlockDiag failure to compile in numba backend by @ricardoV94 in #1830
- Numba DimShuffle: special case for 0d input by @ricardoV94 in #1832
Maintenance 🔧
- Allow caching of cython functions in numba backend by @jessegrabowski in #1807
- Eager check for invalid ndim in TensorType by @ricardoV94 in #1813
- Implement
trisymbolically by @ricardoV94 in #1814 - Cache tridiagonal solve in numba mode by @jessegrabowski in #1816
- Switch to new Scan API in jacobian by @ricardoV94 in #1824
- Rewrite log1mexp(log1mexp(x)) to x by @maresb in #1831
Full Changelog: rel-2.36.2...rel-2.36.3