aesara
aesara copied to clipboard
Aesara is a Python library for defining, optimizing, and efficiently evaluating mathematical expressions involving multi-dimensional arrays.
Closes #1094 - [ ] Inspect the types of graphs produced by the broadcasting used in this approach and make sure they're fully reduced. - [ ] Investigate the effects...
Also, for some reason, the `__call__` method of `InvGammaRV` required a `rate` parameter; I checked the scipy documentation, compared their definition to Wikipedia's and the distribution is indeed parametrized in...
This PR closes #1101 by fixing the way C cache version tuples are generated when `Op.__props__` is empty. More specifically, these changes prevent the addition of empty tuples to the...
This draft PR adds `scipy.special's` `owens_t`-function, needed primarily in the computation of a skewed Gaussian's CDF [1]. The gradient is taken from wolfram alpha ([2] and [3]). As I've never...
## Description of your problem or feature request In certain circumstances we end up having incorrect cache misses leading to extra storage / CPU usage. To reproduce, save the following...
## Description of your problem or feature request With this graph we do a compilation for each process that runs (storing it for the duration of the process), rather than...
```python import numpy as np import aesara.tensor as at x = np.full((2, 3, 3), np.eye(3)) np.linalg.det(x) # broadcast operation fine at.linalg.det(x) # AssertionError x.ndim == 2 ```
Here's a MWE: ```python import aesara import aesara.tensor as at from aesara.raise_op import assert_op x = at.vector("x") x_a = assert_op(x, at.gt(x.shape[0], 1)) y = x_a.shape[0] aesara.dprint(y, print_type=True) # Subtensor{int64} [id...
[`Elemwise` appears to store its `ufunc` objects in `Apply.tag`](https://github.com/aesara-devs/aesara/blob/fd50f36b404d1c89a841907d3682537d5f7719ab/aesara/tensor/elemwise.py#L673) in certain cases, and we absolutely do not want this—especially since this poor choice has already caused its concerns to leak...
This PR allows for known shapes to be propagated to the outputs of Elemwise OPs It won't solve #732, but it doesn't seem like there was a good reason not...