|
30 | 30 | from aesara.sparse.basic import sp_sum
|
31 | 31 | from aesara.tensor import gammaln, sigmoid
|
32 | 32 | from aesara.tensor.nlinalg import det, eigh, matrix_inverse, trace
|
33 |
| -from aesara.tensor.random.basic import MultinomialRV, dirichlet, multivariate_normal |
| 33 | +from aesara.tensor.random.basic import dirichlet, multinomial, multivariate_normal |
34 | 34 | from aesara.tensor.random.op import RandomVariable, default_supp_shape_from_params
|
35 | 35 | from aesara.tensor.random.utils import broadcast_params, normalize_size_param
|
36 | 36 | from aesara.tensor.slinalg import Cholesky
|
@@ -490,30 +490,6 @@ def logp(value, a):
|
490 | 490 | )
|
491 | 491 |
|
492 | 492 |
|
493 |
| -class MultinomialRV(MultinomialRV): |
494 |
| - """Aesara's `MultinomialRV` doesn't broadcast; this one does.""" |
495 |
| - |
496 |
| - @classmethod |
497 |
| - def rng_fn(cls, rng, n, p, size): |
498 |
| - if n.ndim > 0 or p.ndim > 1: |
499 |
| - n, p = broadcast_params([n, p], cls.ndims_params) |
500 |
| - size = tuple(size or ()) |
501 |
| - |
502 |
| - if size: |
503 |
| - n = np.broadcast_to(n, size) |
504 |
| - p = np.broadcast_to(p, size + (p.shape[-1],)) |
505 |
| - |
506 |
| - res = np.empty(p.shape) |
507 |
| - for idx in np.ndindex(p.shape[:-1]): |
508 |
| - res[idx] = rng.multinomial(n[idx], p[idx]) |
509 |
| - return res |
510 |
| - else: |
511 |
| - return rng.multinomial(n, p, size=size) |
512 |
| - |
513 |
| - |
514 |
| -multinomial = MultinomialRV() |
515 |
| - |
516 |
| - |
517 | 493 | class Multinomial(Discrete):
|
518 | 494 | r"""
|
519 | 495 | Multinomial log-likelihood.
|
|
0 commit comments