pytensor
pytensor copied to clipboard
PyTensor allows you to define, optimize, and efficiently evaluate mathematical expressions involving multi-dimensional arrays.
### Description The Aarray API standard has a name for this: https://data-apis.org/array-api/draft/design_topics/data_dependent_output_shapes.html Propose renaming it to `data_dependent_output_shapes` for discoverability / standardization. https://github.com/pymc-devs/pytensor/blob/19dafe42e2b34037b0f906d61116fa0d1de5025c/pytensor/graph/op.py#L198-L205 We should also document it in the Op...
### Description Mentioned in https://github.com/pymc-devs/pytensor/pull/1046#pullrequestreview-2545416966
Related to #189 This PR implements a new low level `Loop` `Op` which can be easily transpiled to `Numba` (the Python perform method takes 9 lines, yay to not having...
Right now we have `grad`, `L_op`, `R_op`. ## Deprecate `grad` in favor of `L_op`: `grad` is exactly the same as `L_op` except it doesn't have access to the outputs of...
### Description In https://github.com/pymc-devs/pytensor/pull/1178 we rewrite batched dots that are just multiplication away, but left core dots the same due to use of BLAS operations for those (whether they are...
There was some convoluted logic in Elemwise perform method to create the python perform callable. In old times, Theano tried to fallback to the C-impl when the number of operands...
### Description https://github.com/pymc-devs/pytensor/pull/1193 showed many print statements that are likely better as log records. We should change them, but they have to be reviewed on a per basis
### Description We currently use `np.linalg.svd`, which doesn't support `compute_uv = True`, or inplace flags. The relevant LAPACK functions to get full functionality are [gesdd ](https://netlib.org/lapack/explore-html/df/d22/group__gesdd.html) and [gesvd](https://netlib.org/lapack/explore-html/d1/d7f/group__gesvd.html).
### Description https://data-apis.org/array-api/latest/index.html The standard considers lazy graph libraries so we should be fine. The only large difference I saw was that the `.shape` attribute should return a tuple of...
### Description Similarly to how we approached `Kv`/`Kve` in #1081, we only need one core Op: `Ive`. We should include the equivalent `log(iv(x))` rewrite for stability, where `iv` is the...