tensorflow / tensorflow/probability
Dirichlet distribution sampling issue when jit_compile=True
Nobody has claimed this yet.
- Dominant language
- Jupyter Notebook
- Stars
- 4.4k
- Forks
- 1.1k
- PR merge metrics
- No merged PRs in 30d
Description
It seems that some seeds produce nans when sampling from a Dirichlet distribution. Any idea why? Example script below that was tested on Google Colab.
import numpy as np
import tensorflow as tf
import tensorflow_probability as tfp
dirichlet_lambda = tf.convert_to_tensor([2., 5., 0., 10., 10., 12., 10., 10., 1., 1.], dtype = tf.float32)
seed_s2 = tf.convert_to_tensor([-1012227931, -757448172], dtype = tf.int32)
seed_s3 = tf.convert_to_tensor([-1012227931, -757448170], dtype = tf.int32)
@tf.function(jit_compile = True)
def jitwhat(concentration, seed):
theta_j_k = tfp.distributions.Dirichlet(concentration = concentration).sample((13, 10), seed = seed) #.sample(seed = seed_s2) #
return theta_j_k
foo = jitwhat(dirichlet_lambda, seed_s2)
np.where(np.isnan(foo))
Note that the Dirichlet distribution is "degenerate" as it has one of the parameters that is zero. However generally the output from the sampling method is just a zero in the corresponding position, while with that specific seed it gives NaN.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running the provided Colab reproduction with the two seeds and the jit_compile=True Dirichlet.sample call, then compare the outputs with jit compilation disabled and with the zero concentration removed. Trace the Dirichlet sampling path involved in the reproduction; done means explaining the seed-dependent NaNs and identifying a verified correction or limitation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- numpy, python
- Domain
- machine-learning
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100