probability icon indicating copy to clipboard operation
probability copied to clipboard

tfd.MultivariateNormalTriL has not implemented quantile()?

Open markub3327 opened this issue 2 years ago • 0 comments

Hi,

I tried to get a quantile of MultivariateNormalTriL distribution, but I got an error:

Traceback (most recent call last): File "", line 1, in File "/home/kai/miniconda3/envs/tf/lib/python3.10/site-packages/tensorflow_probability/python/distributions/distribution.py", line 1573, in quantile return self._call_quantile(value, name, **kwargs) File "/home/kai/miniconda3/envs/tf/lib/python3.10/site-packages/tensorflow_probability/python/distributions/distribution.py", line 1553, in _call_quantile return self._quantile(value, **kwargs) File "/home/kai/miniconda3/envs/tf/lib/python3.10/site-packages/tensorflow_probability/python/distributions/transformed_distribution.py", line 471, in _quantile self.bijector._internal_is_increasing(**bijector_kwargs), # pylint: disable=protected-access File "/home/kai/miniconda3/envs/tf/lib/python3.10/site-packages/tensorflow_probability/python/bijectors/bijector.py", line 1352, in _internal_is_increasing return self._call_is_increasing(name, **kwargs) File "/home/kai/miniconda3/envs/tf/lib/python3.10/site-packages/tensorflow_probability/python/bijectors/bijector.py", line 1336, in _call_is_increasing return tf.identity(self._is_increasing(**kwargs)) File "/home/kai/miniconda3/envs/tf/lib/python3.10/site-packages/tensorflow_probability/python/bijectors/chain.py", line 137, in _is_increasing is_increasing, b._internal_is_increasing(**kwargs.get(b.name, {}))) # pylint: disable=protected-access File "/home/kai/miniconda3/envs/tf/lib/python3.10/site-packages/tensorflow_probability/python/bijectors/bijector.py", line 1352, in _internal_is_increasing return self._call_is_increasing(name, **kwargs) File "/home/kai/miniconda3/envs/tf/lib/python3.10/site-packages/tensorflow_probability/python/bijectors/bijector.py", line 1336, in _call_is_increasing return tf.identity(self._is_increasing(**kwargs)) File "/home/kai/miniconda3/envs/tf/lib/python3.10/site-packages/tensorflow_probability/python/bijectors/bijector.py", line 1331, in _is_increasing raise NotImplementedError(f'_is_increasing not implemented in {cls}.') NotImplementedError: _is_increasing not implemented in <class 'tensorflow_probability.python.bijectors.scale_matvec_linear_operator.ScaleMatvecLinearOperator'>.

Code

>>> tfd = tfp.distributions

>>> # Initialize a single 3-variate Gaussian.
>>> mu = [1., 2, 3]
>>> cov = [[ 0.36,  0.12,  0.06],
...        [ 0.12,  0.29, -0.13],
...        [ 0.06, -0.13,  0.26]]
>>> scale = tf.linalg.cholesky(cov)
2023-04-28 19:14:26.857851: I tensorflow/core/util/cuda_solvers.cc:179] Creating GpuSolver handles for stream 0x56084b9cb4a0
>>> mvn = tfd.MultivariateNormalTriL(
...     loc=mu,
...     scale_tril=scale)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'tfd' is not defined. Did you mean: 'tfp'?
>>> tfd = tfp.distributions
>>> mvn = tfd.MultivariateNormalTriL(
...     loc=mu,
...     scale_tril=scale)
>>> mvn.quantile(0.95)

markub3327 avatar Apr 28 '23 17:04 markub3327